diff --git a/docker/toolkits.txt b/docker/toolkits.txt index ed4ac558..7ec24014 100644 --- a/docker/toolkits.txt +++ b/docker/toolkits.txt @@ -12,4 +12,5 @@ arcade-stripe-api arcade-squareup-api arcade-xero-api arcade-zendesk +arcade-zoho-books-api arcade-zoho-creator-api diff --git a/toolkits/zoho_books_api/.pre-commit-config.yaml b/toolkits/zoho_books_api/.pre-commit-config.yaml new file mode 100644 index 00000000..b2ef77e2 --- /dev/null +++ b/toolkits/zoho_books_api/.pre-commit-config.yaml @@ -0,0 +1,18 @@ +files: ^.*/zoho_books_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_books_api/.ruff.toml b/toolkits/zoho_books_api/.ruff.toml new file mode 100644 index 00000000..fca949cd --- /dev/null +++ b/toolkits/zoho_books_api/.ruff.toml @@ -0,0 +1,45 @@ +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"] +"**/request_body_schemas.py" = ["E501"] + +[format] +preview = true +skip-magic-trailing-comma = false diff --git a/toolkits/zoho_books_api/LICENSE b/toolkits/zoho_books_api/LICENSE new file mode 100644 index 00000000..dfbb8b76 --- /dev/null +++ b/toolkits/zoho_books_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_books_api/Makefile b/toolkits/zoho_books_api/Makefile new file mode 100644 index 00000000..86da492a --- /dev/null +++ b/toolkits/zoho_books_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_books_api/arcade_zoho_books_api/__init__.py b/toolkits/zoho_books_api/arcade_zoho_books_api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/tools/__init__.py b/toolkits/zoho_books_api/arcade_zoho_books_api/tools/__init__.py new file mode 100644 index 00000000..e0219a85 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/tools/__init__.py @@ -0,0 +1,39263 @@ +"""Arcade Starter Tools for Zoho_Books + +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, + content: 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, + content=content, + ) + response.raise_for_status() + except httpx.HTTPStatusError as e: + # Only retry on 5xx server errors + if e.response.status_code >= 500 and attempt < max_retries - 1: + # Exponential backoff: 0.5s, 1s, 2s + await asyncio.sleep(INITIAL_RETRY_DELAY * (2**attempt)) + continue + # Re-raise for 4xx errors or if max retries reached + raise + except httpx.RequestError: + # Don't retry request errors (network issues are handled by transport) + raise + else: + return response + + # This should never be reached, but satisfies type checker + raise httpx.RequestError("Max retries exceeded") # noqa: TRY003 + + +async def make_request_with_schema_validation( + url: str, + method: str, + request_data: dict[str, Any], + schema: dict[str, Any], + params: dict[str, Any] | None = None, + headers: dict[str, Any] | None = None, + max_retries: int = 3, +) -> httpx.Response: + """Make an HTTP request with schema validation on format errors.""" + try: + response = await make_request( + url=url, + method=method, + params=params, + headers=headers, + content=json.dumps(request_data), + max_retries=max_retries, + ) + except httpx.HTTPStatusError as e: + # Only provide schema validation for format-related errors + if e.response.status_code in (400, 422): + # Run validation to provide additional context + is_valid, validation_error = validate_json_against_schema(request_data, schema) + + api_error_details = f"API returned {e.response.status_code}: {e.response.text}" + + if not is_valid: + # Schema validation found issues - additional context + additional_context = ( + f"{api_error_details}\n\n" + f"Schema validation found the following issues:\n" + f"{validation_error}" + ) + else: + # Schema validation passed - just show API error + additional_context = api_error_details + + raise RetryableToolError( + message=(f"API request failed with validation error: {e.response.status_code}"), + developer_message=api_error_details, + additional_prompt_content=additional_context, + ) from e + else: + # For non-validation errors, re-raise as-is + raise + else: + return response + + +def validate_json_against_schema( + json_data: dict[str, Any], schema: dict[str, Any] +) -> tuple[bool, str | None]: + """Validate JSON data against an OpenAPI/JSON Schema. + + This provides full JSON Schema Draft 7 validation including: + - Required fields, types, enums + - Pattern validation (regex) + - Format validation (email, uuid, date-time, etc.) + - Min/max length and values + - oneOf, anyOf, allOf + - And all other JSON Schema features + + Args: + json_data: The JSON data to validate + schema: The JSON Schema to validate against + + Returns: + Tuple of (is_valid, error_messages). If valid, error_messages is None. + If invalid, error_messages contains all validation errors. + """ + try: + validator = jsonschema.Draft7Validator( + schema, format_checker=jsonschema.Draft7Validator.FORMAT_CHECKER + ) + # Collect ALL validation errors + errors = list(validator.iter_errors(json_data)) + if errors: + # Format all errors with their paths + error_messages = [] + for error in errors: + error_path = ".".join(str(p) for p in error.path) if error.path else "root" + error_messages.append(f"{error.message} at {error_path}") + # Join all errors with newlines + return False, "\n".join(error_messages) + else: + return True, None + except jsonschema.SchemaError as e: + return False, f"Invalid schema: {e.message}" + except Exception as e: + return False, f"Validation error: {e!s}" + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_bank_account( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which to create the bank or credit card account. 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 'create_bank_account'."]: + """Create a bank or credit card account in your organization. + + This tool is used to create a new bank account or credit card account for your organization via Zoho Books. Call this tool when you need to add financial accounts to manage and track transactions in your organization's accounting system. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEBANKACCOUNT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEBANKACCOUNT_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["CREATEBANKACCOUNT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bankaccounts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEBANKACCOUNT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_bank_accounts( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. This is required to list all associated bank and credit card accounts in Zoho Books.", # noqa: E501 + ], + account_status_filter: Annotated[ + str | None, + "Specify the status to filter accounts: 'Status.All', 'Status.Active', or 'Status.Inactive'.", # noqa: E501 + ] = None, + sort_by: Annotated[ + str | None, + "Specify the sorting criterion for the accounts. Options: 'account_name', 'account_type', 'account_code'.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, "The page number of results to retrieve. Defaults to 1 if not specified." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to be fetched per page. Default value is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_bank_accounts'."]: + """List all bank and credit card accounts for your organization. + + Use this tool to retrieve all bank and credit card accounts associated with your organization in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "filter_by": account_status_filter, + "sort_column": sort_by, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_bank_account_zoho_books( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization to be modified. Required for identifying the specific organization's bank account. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_account_id: Annotated[ + str | None, + "Unique identifier of the bank account to be updated in Zoho Books. 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_bank_account'."]: + """Modify a bank account in Zoho Books. + + Use this tool to update details of an existing bank account in Zoho Books. It should be called when there's a need to modify account information such as account name or details. + + 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[ + "UPDATEBANKACCOUNTZOHOBOOKS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bank_account_id: + missing_params.append(("bank_account_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEBANKACCOUNTZOHOBOOKS_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["UPDATEBANKACCOUNTZOHOBOOKS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bankaccounts/{account_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=bank_account_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEBANKACCOUNTZOHOBOOKS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_bank_account_details( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID for the organization. Required to specify which organization's data to access.", # noqa: E501 + ], + bank_account_id: Annotated[ + str, "Unique identifier used to specify the bank account for detailed retrieval." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_bank_account'."]: + """Retrieve detailed information of a specified bank account. + + Call this tool to get a comprehensive view of a bank account by specifying its account ID. Useful for accessing detailed account data within Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts/{account_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=bank_account_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_bank_account( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books. Required to identify which organization's bank account is to be deleted.", # noqa: E501 + ], + bank_account_unique_id: Annotated[str, "Unique identifier of the bank account to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_bank_account'."]: + """Delete a bank account from your organization. + + Use this tool to permanently delete a bank account associated with your organization in Zoho Books. This should be called when you need to remove an account to prevent future transactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts/{account_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=bank_account_unique_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def deactivate_bank_account( + context: ToolContext, + organization_id: Annotated[ + str, + "The ID of the organization in Zoho Books. This is required to identify which organization's bank account to deactivate.", # noqa: E501 + ], + bank_account_id: Annotated[ + str, "Unique identifier of the bank account to deactivate in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_bank_account_inactive'."]: + """Deactivate a bank account in Zoho Books. + + Use this tool to mark a bank account as inactive in Zoho Books. This can be useful when an account is no longer in use and should be temporarily disabled.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts/{account_id}/inactive".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=bank_account_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def activate_bank_account( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization in Zoho Books. This ID is required to activate a bank account within the specified organization.", # noqa: E501 + ], + bank_account_id: Annotated[ + str, "Unique identifier of the bank account to be activated in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_bank_account_active'."]: + """Activate a bank account in Zoho Books. + + This tool is used to mark a bank account as active in Zoho Books. It should be called when there is a need to change the status of a bank account to active.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts/{account_id}/active".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=bank_account_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + 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 import_bank_statements( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization to import bank statements for. 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 'import_bank_statements'."]: + """Import bank or credit card feeds into your account. + + Use this tool to import bank or credit card statements directly into your account for seamless financial management. This should be called when you need to process new bank or credit card data into the system. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["IMPORTBANKSTATEMENTS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["IMPORTBANKSTATEMENTS_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["IMPORTBANKSTATEMENTS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bankstatements".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["IMPORTBANKSTATEMENTS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_last_imported_bank_statement( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization used to retrieve the bank statement." + ], + bank_account_id: Annotated[ + str, "Unique identifier of the bank account for retrieving the last imported statement." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'get_last_imported_bank_statement'." +]: + """Retrieve the last imported bank statement details for an account. + + Use this tool to get information about the most recently imported bank statement for a specified account. It provides insights into the account's latest financial activities.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts/{account_id}/statement/lastimported".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=bank_account_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_last_imported_bank_statement( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. This is required to specify which organization's bank statement needs to be deleted.", # noqa: E501 + ], + bank_account_unique_identifier: Annotated[ + str, "Unique identifier for the bank account from which the statement will be deleted." + ], + bank_statement_id: Annotated[ + str, + "Unique identifier of the bank statement to be deleted. Required for identifying which statement to remove.", # noqa: E501 + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'delete_last_imported_bank_statement'." +]: + """Delete the last imported bank statement. + + Use this tool to delete the most recently imported bank statement from the specified bank account. Useful for correcting errors or removing unnecessary data.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts/{account_id}/statement/{statement_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_id=bank_account_unique_identifier, + statement_id=bank_statement_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_bank_account_rules( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. This ID is necessary to fetch the rules linked with the specified bank or credit card account.", # noqa: E501 + ], + bank_account_id: Annotated[int, "ID of the bank or credit card account to fetch rules for."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_bank_account_rules'."]: + """Fetch rules for a specified bank account. + + This tool fetches all the rules created for a given bank or credit card account ID. It's used to retrieve details about transaction rules associated with a specific account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts/rules".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "account_id": bank_account_id, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_financial_account_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Used to specify which organization's account rules are being altered. 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 'create_bank_account_rule'."]: + """Create and apply rules for banking and credit accounts. + + This tool allows you to create a rule for deposits, withdrawals, refunds, or charges on bank and credit card accounts. It should be called when you need to automate financial processes by setting specific rules for account transactions. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEFINANCIALACCOUNTRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEFINANCIALACCOUNTRULE_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["CREATEFINANCIALACCOUNTRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bankaccounts/rules".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEFINANCIALACCOUNTRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_bank_account_rule_details( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which to retrieve the bank account rule details." + ], + bank_account_rule_id: Annotated[ + str, "Unique identifier of the bank account rule to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_bank_account_rule'."]: + """Retrieve details of a specific bank account rule. + + Call this tool to get information about a specific rule in a bank account using its rule ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts/rules/{rule_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), rule_id=bank_account_rule_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_bank_account_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization in Zoho Books for which the bank account rule needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_account_rule_id: Annotated[ + str | None, + "Unique identifier for the bank account rule to update in Zoho Books. 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_bank_account_rule'."]: + """Update or modify a bank account rule in Zoho Books. + + This tool updates an existing bank account rule in Zoho Books. It should be called when you need to make changes to a rule, either by adding new criteria or modifying existing ones. The tool provides confirmation once the rule update is successful. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEBANKACCOUNTRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bank_account_rule_id: + missing_params.append(("bank_account_rule_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEBANKACCOUNTRULE_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["UPDATEBANKACCOUNTRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bankaccounts/rules/{rule_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), rule_id=bank_account_rule_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEBANKACCOUNTRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_bank_account_rule( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID representing the organization. Required for identifying the correct account.", # noqa: E501 + ], + bank_account_rule_id: Annotated[ + str, "Unique identifier of the bank account rule to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_bank_account_rule'."]: + """Deletes a bank account rule, removing its effect on transactions. + + Use this tool to delete a specific bank account rule, making it inapplicable to future transactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bankaccounts/rules/{rule_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), rule_id=bank_account_rule_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_bank_transaction( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the bank transaction is to be created. This ID helps identify the specific organization within Zoho Books. 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 'create_bank_transaction'."]: + """Creates a bank transaction in Zoho Books. + + This tool is used to create a bank transaction within Zoho Books. It should be called when a user needs to log a financial transaction using allowed transaction types. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEBANKTRANSACTION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEBANKTRANSACTION_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["CREATEBANKTRANSACTION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEBANKTRANSACTION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_bank_transactions( + context: ToolContext, + organization_id: Annotated[ + str, + "A unique ID representing the organization for which transactions are being queried. This is required to specify the context of the request.", # noqa: E501 + ], + bank_account_id: Annotated[ + int | None, "Unique identifier for the bank account to retrieve transactions for." + ] = None, + transaction_type_filter: Annotated[ + str | None, + "Specify the type of transactions to retrieve. Expected as a string, e.g., 'expense', 'income'.", # noqa: E501 + ] = None, + transaction_date_range: Annotated[ + str | None, + "Specify the start and end date for the transaction date range. Use 'date_start' for the start and 'date_end' for the end date.", # noqa: E501 + ] = None, + transaction_amount_range: Annotated[ + float | None, + "Set a range of transaction amounts to filter transactions. Use two numbers: start amount, end amount.", # noqa: E501 + ] = None, + transaction_status_list_view: Annotated[ + str | None, + "Filter transactions by status: all, uncategorized, manually_added, matched, excluded, categorized.", # noqa: E501 + ] = None, + transaction_reference_number: Annotated[ + str | None, "Search for a transaction using its reference number for more precise results." + ] = None, + transaction_filter_type: Annotated[ + str | None, + "Filter transactions by type: Status.All, Status.Uncategorized, Status.Categorized, Status.ManuallyAdded, Status.Excluded, Status.Matched.", # noqa: E501 + ] = None, + sort_transactions_by: Annotated[ + str | None, "Specify how to sort transactions. Allowed value: 'date'." + ] = None, + transaction_status_filter: Annotated[ + str | None, + "Filter transactions by status: All, uncategorized, manually_added, matched, excluded, categorized.", # noqa: E501 + ] = None, + search_transactions_by_text: Annotated[ + str | None, "Search transactions using contact name or transaction description." + ] = None, + transaction_page_number: Annotated[ + int | None, + "Page number of transactions to fetch, with a default value of 1. Used for pagination.", + ] = 1, + records_per_page: Annotated[ + int | None, "Specify the number of transaction records to fetch per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_bank_transactions'."]: + """Retrieve all transaction details for a bank account. + + Use this tool to obtain detailed information about all transactions involved in a specific bank account. It is helpful for financial analysis and record-keeping.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/banktransactions".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "account_id": bank_account_id, + "transaction_type": transaction_type_filter, + "date": transaction_date_range, + "amount": transaction_amount_range, + "status": transaction_status_list_view, + "reference_number": transaction_reference_number, + "filter_by": transaction_filter_type, + "sort_column": sort_transactions_by, + "transaction_status": transaction_status_filter, + "search_text": search_transactions_by_text, + "page": transaction_page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_bank_transaction( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization in Zoho Books for which the bank transaction is being updated. This is required to specify the organization context for the transaction update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_transaction_identifier: Annotated[ + str | None, + "Unique identifier for the specific bank transaction to update. 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_bank_transaction'."]: + """Update details of a specific bank transaction. + + This tool updates the specified bank transaction with the provided information. Call this tool to make changes to existing transaction details in Zoho Books. + + 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[ + "UPDATEBANKTRANSACTION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bank_transaction_identifier: + missing_params.append(("bank_transaction_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEBANKTRANSACTION_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["UPDATEBANKTRANSACTION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/{bank_transaction_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + bank_transaction_id=bank_transaction_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEBANKTRANSACTION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_bank_transaction_details( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the bank transaction details need to be fetched." + ], + bank_transaction_id: Annotated[ + str, "Unique identifier for the bank transaction to fetch its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_bank_transaction'."]: + """Fetch details of a specific bank transaction by ID. + + Use this tool to retrieve detailed information about a bank transaction by providing its transaction ID. This is useful for accessing specific transaction records in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/banktransactions/{bank_transaction_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + bank_transaction_id=bank_transaction_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_bank_transaction( + context: ToolContext, + organization_id: Annotated[ + str, "Specify the ID of the organization to target for transaction deletion." + ], + bank_transaction_id: Annotated[ + str, "Unique identifier for the bank transaction to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_bank_transaction'."]: + """Delete a bank transaction using its ID. + + Use this tool to delete a specific bank transaction by providing the transaction ID. Ideal for managing and cleaning up bank account transactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/banktransactions/{bank_transaction_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + bank_transaction_id=bank_transaction_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def find_matching_bank_transactions( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization to search transactions for."], + transaction_id: Annotated[ + str, "Unique identifier for the bank transaction to search for matching entries." + ], + bank_transaction_id: Annotated[str, "Unique identifier of the bank transaction to be matched."], + transaction_type: Annotated[ + str | None, + "Specify the type of transaction. Allowed values: deposit, refund, transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return. Note: Some types are module-specific and cannot be created under this endpoint.", # noqa: E501 + ] = None, + filter_date_after: Annotated[ + str | None, + "Specify the date after which transactions should be filtered. Use YYYY-MM-DD format.", + ] = None, + filter_date_before: Annotated[ + str | None, + "Specify a date in YYYY-MM-DD format. Transactions before this date will be filtered.", + ] = None, + minimum_transaction_amount: Annotated[ + float | None, + "Minimum amount to filter transactions. Only transactions equal to or greater than this amount are included.", # noqa: E501 + ] = None, + maximum_transaction_amount: Annotated[ + float | None, + "Maximum amount for filtering transactions. Only transactions with an amount less than or equal to this value will be included.", # noqa: E501 + ] = None, + transaction_contact_name: Annotated[ + str | None, "Name of the contact person involved in the transaction." + ] = None, + transaction_reference_number: Annotated[ + str | None, "Reference number of the transaction to filter matching records." + ] = None, + page_number_to_fetch: Annotated[ + int | None, "Page number to fetch. Default is 1, used for pagination." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to be fetched per page. The default value is 200." + ] = 200, + show_all_transactions: Annotated[ + bool | None, + "Set to true to display all transactions without applying filters; false to filter transactions.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_matching_bank_transactions'."]: + """Find matching uncategorized bank transactions. + + This tool retrieves a list of uncategorized bank transactions that match specified criteria. It can also handle invoices, bills, and credit notes by recording and matching new payment or refund transactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/match".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + transaction_id=bank_transaction_id, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "transaction_id": bank_transaction_id, + "transaction_type": transaction_type, + "date_after": filter_date_after, + "date_before": filter_date_before, + "amount_start": minimum_transaction_amount, + "amount_end": maximum_transaction_amount, + "contact": transaction_contact_name, + "reference_number": transaction_reference_number, + "show_all_transactions": show_all_transactions, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def match_bank_transaction( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_transaction_id: Annotated[ + str | None, + "Unique identifier of the bank transaction to be matched. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + account_id: Annotated[ + str | None, + "The mandatory Account ID for listing transactions to match. This is required to specify the bank account in Zoho Books. 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 'match_bank_transaction'."]: + """Match an uncategorized bank transaction with an existing one. + + Use this tool to match an uncategorized transaction with an existing transaction in Zoho Books, ensuring proper categorization and reconciliation. + + 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["MATCHBANKTRANSACTION_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bank_transaction_id: + missing_params.append(("bank_transaction_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["MATCHBANKTRANSACTION_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["MATCHBANKTRANSACTION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/match".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + transaction_id=bank_transaction_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["MATCHBANKTRANSACTION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id, "account_id": account_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def unmatch_bank_transaction( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization for which the transaction unmatching is to be performed.", # noqa: E501 + ], + transaction_id: Annotated[ + str, "The unique identifier of the bank transaction to be unmatched." + ], + account_id_for_transactions: Annotated[ + str | None, + "The mandatory ID of the account for which transactions are to be unlisted. This is essential to specify the correct account involved in the transaction.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'unmatch_bank_transaction'."]: + """Unmatch a previously matched bank transaction. + + Use this tool to unmatch a bank transaction that was previously categorized, reverting it to an uncategorized state.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/banktransactions/{transaction_id}/unmatch".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), transaction_id=transaction_id + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_id, + "account_id": account_id_for_transactions, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def exclude_bank_transaction( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization to which the transaction belongs."], + transaction_id: Annotated[str, "Unique identifier of the bank transaction to be excluded."], + account_id_for_transaction_exclusion: Annotated[ + str | None, + "The ID of the account from which a transaction will be excluded. This is a mandatory field.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'exclude_bank_transaction'."]: + """Exclude a transaction from a bank or credit card account. + + Use this tool to exclude a specific transaction from your bank or credit card account records. Ideal for removing unwanted or incorrect entries.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/exclude".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), transaction_id=transaction_id + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_id, + "account_id": account_id_for_transaction_exclusion, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def restore_bank_transaction( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the Zoho Books organization to restore the transaction for." + ], + bank_transaction_id: Annotated[ + str, "The unique identifier for the specific bank transaction to be restored." + ], + account_id: Annotated[ + str | None, "Mandatory Account ID for which transactions are to be restored." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'restore_bank_transaction'."]: + """Restores an excluded bank transaction in your account. + + Use this tool to recover a previously excluded bank transaction in your Zoho Books account, identified by the transaction ID. It should be called when you need to reinstate transactions that were mistakenly removed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/restore".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + transaction_id=bank_transaction_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id, "account_id": account_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def categorize_bank_transaction( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "Provide the ID of the organization to categorize the transaction. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_transaction_id: Annotated[ + str | None, + "Unique identifier of the bank transaction to be categorized. 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 'categorize_bank_transaction'."]: + """Categorize an uncategorized bank transaction. + + This tool categorizes an uncategorized bank transaction by creating a new transaction. Use it when a bank transaction needs to be classified into a specific category. + + 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[ + "CATEGORIZEBANKTRANSACTION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not bank_transaction_id: + missing_params.append(("bank_transaction_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CATEGORIZEBANKTRANSACTION_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["CATEGORIZEBANKTRANSACTION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + transaction_id=bank_transaction_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CATEGORIZEBANKTRANSACTION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def categorize_bank_transaction_as_expense( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books. Required to identify which organization's transaction is being categorized. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_transaction_id: Annotated[ + str | None, + "Unique identifier for the bank transaction to be categorized as an expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + attachment_document: Annotated[ + str | None, + "Document file to attach with the transaction as a string (e.g., base64 encoded or URL). Only used when mode is 'execute'.", # noqa: E501 + ] = None, + total_number_of_files: Annotated[ + int | None, + "Total count of files to be attached to the transaction. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + document_identifiers: Annotated[ + int | None, + "Comma-separated list of document IDs to be attached to the transaction. 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 'categorize_bank_transaction_as_expense'." +]: + """Categorize an uncategorized bank transaction as an expense. + + Use this tool to classify an uncategorized bank transaction as an expense in Zoho Books. It should be called when a user needs to organize their financial records by assigning a transaction to the expense category. + + 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[ + "CATEGORIZEBANKTRANSACTIONASEXPENSE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not bank_transaction_id: + missing_params.append(("bank_transaction_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CATEGORIZEBANKTRANSACTIONASEXPENSE_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["CATEGORIZEBANKTRANSACTIONASEXPENSE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/expenses".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + transaction_id=bank_transaction_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CATEGORIZEBANKTRANSACTIONASEXPENSE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_identifier, + "doc": attachment_document, + "totalFiles": total_number_of_files, + "document_ids": document_identifiers, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def uncategorize_bank_transaction( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books for which the transaction is to be uncategorized.", # noqa: E501 + ], + bank_transaction_id: Annotated[ + str, "Unique identifier of the bank transaction to uncategorize." + ], + account_id_for_transactions: Annotated[ + str | None, "The mandatory Account ID for which transactions are to be listed." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'uncategorize_bank_transaction'."]: + """Revert a categorized bank transaction to uncategorized. + + Use this tool to uncategorize a previously categorized bank transaction. Call this when needing to correct or revert the categorization of a transaction in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/banktransactions/{transaction_id}/uncategorize".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + transaction_id=bank_transaction_id, + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_id, + "account_id": account_id_for_transactions, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def categorize_transaction_as_vendor_payment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique string ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + transaction_id: Annotated[ + str | None, + "Unique identifier of the bank transaction to categorize as vendor payment. 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 'categorize_bank_transaction_as_vendor_payment'.", +]: + """Categorize a bank transaction as a vendor payment. + + Use this tool to categorize an uncategorized bank transaction as a vendor payment in Zoho Books. + + 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[ + "CATEGORIZETRANSACTIONASVENDORPAYMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not transaction_id: + missing_params.append(("transaction_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS[ + "CATEGORIZETRANSACTIONASVENDORPAYMENT_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[ + "CATEGORIZETRANSACTIONASVENDORPAYMENT_REQUEST_BODY_SCHEMA" + ], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/vendorpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), transaction_id=transaction_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CATEGORIZETRANSACTIONASVENDORPAYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def categorize_transaction_as_payment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization in Zoho Books for which the transaction is being categorized. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_transaction_id: Annotated[ + str | None, + "Unique identifier of the bank transaction to be categorized as Customer Payment. 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 'categorize_bank_transaction_as_customer_payment'.", +]: + """Categorize an uncategorized transaction as a Customer Payment. + + Use this tool to categorize an uncategorized bank transaction as a Customer Payment in Zoho Books. This should be called when you need to update the categorization status of bank transactions. + + 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[ + "CATEGORIZETRANSACTIONASPAYMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bank_transaction_id: + missing_params.append(("bank_transaction_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CATEGORIZETRANSACTIONASPAYMENT_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["CATEGORIZETRANSACTIONASPAYMENT_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/customerpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + transaction_id=bank_transaction_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CATEGORIZETRANSACTIONASPAYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def categorize_transaction_as_refund( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Must match the organization in Zoho Books to categorize transactions accurately. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + transaction_id: Annotated[ + str | None, + "Unique identifier of the bank transaction to categorize as a refund from a credit note. 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 'categorize_as_credit_note_refunds'." +]: + """Categorize a transaction as a credit note refund. + + Use this tool to categorize an uncategorized bank transaction specifically as a refund from a credit note. + + 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[ + "CATEGORIZETRANSACTIONASREFUND_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not transaction_id: + missing_params.append(("transaction_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CATEGORIZETRANSACTIONASREFUND_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["CATEGORIZETRANSACTIONASREFUND_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/creditnoterefunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), transaction_id=transaction_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CATEGORIZETRANSACTIONASREFUND_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def categorize_refund_vendor_credit( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Specify the ID of the organization for which the transaction is being categorized as a vendor credit refund. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_transaction_id: Annotated[ + str | None, + "Unique identifier of the bank transaction to categorize as a vendor credit refund. 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 'categorize_as_vendor_credit_refunds'." +]: + """Categorize transactions as vendor credit refunds. + + Use this tool to categorize an uncategorized transaction as a refund from a vendor credit in Zoho Books. Call this tool when you need to identify and organize transactions involving vendor credit refunds. + + 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[ + "CATEGORIZEREFUNDVENDORCREDIT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bank_transaction_id: + missing_params.append(("bank_transaction_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CATEGORIZEREFUNDVENDORCREDIT_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["CATEGORIZEREFUNDVENDORCREDIT_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/vendorcreditrefunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + transaction_id=bank_transaction_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CATEGORIZEREFUNDVENDORCREDIT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def categorize_bank_transaction_payment_refund( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_statement_line_id: Annotated[ + str | None, + "Unique identifier for the bank statement line to be categorized. 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 'categorize_bank_transaction_as_payment_refund'.", +]: + """Categorize bank transactions as payment refunds. + + Use this tool to categorize uncategorized bank transactions specifically as payment refunds in Zoho Books. + + 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[ + "CATEGORIZEBANKTRANSACTIONPAYMENTREFUND_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bank_statement_line_id: + missing_params.append(("bank_statement_line_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS[ + "CATEGORIZEBANKTRANSACTIONPAYMENTREFUND_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[ + "CATEGORIZEBANKTRANSACTIONPAYMENTREFUND_REQUEST_BODY_SCHEMA" + ], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{statement_line_id}/categorize/paymentrefunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + statement_line_id=bank_statement_line_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CATEGORIZEBANKTRANSACTIONPAYMENTREFUND_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.banking.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def categorize_vendor_payment_refund( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization whose transactions are being categorized. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bank_statement_line_id: Annotated[ + str | None, + "Unique identifier for the bank statement line to categorize as Vendor Payment Refund. 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 'categorize_as_vendor_payment_refund'." +]: + """Categorize bank transactions as Vendor Payment Refund. + + Use this tool to categorize uncategorized bank transactions as vendor payment refunds. It should be called when organizing financial data related to refunds from vendors. + + 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[ + "CATEGORIZEVENDORPAYMENTREFUND_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bank_statement_line_id: + missing_params.append(("bank_statement_line_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CATEGORIZEVENDORPAYMENTREFUND_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["CATEGORIZEVENDORPAYMENTREFUND_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/banktransactions/uncategorized/{statement_line_id}/categorize/vendorpaymentrefunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + statement_line_id=bank_statement_line_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CATEGORIZEVENDORPAYMENTREFUND_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_currency_adjustment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. Required for currency adjustments. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + account_identifiers: Annotated[ + str | None, + "Comma-separated IDs of accounts for currency adjustments in Zoho Books. 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 'create_base_currency_adjustment'."]: + """Create a base currency adjustment. + + This tool creates an adjustment to the base currency based on the provided information. It is used to update and manage currency values in Zoho Books. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECURRENCYADJUSTMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not account_identifiers: + missing_params.append(("account_identifiers", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECURRENCYADJUSTMENT_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["CREATECURRENCYADJUSTMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/basecurrencyadjustment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECURRENCYADJUSTMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_identifier, + "account_ids": account_identifiers, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_base_currency_adjustments( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization to retrieve currency adjustments from." + ], + filter_by_date: Annotated[ + str | None, + "Filter the base currency adjustment list by specific date ranges. Allowed values are: Date.All, Date.Today, Date.ThisWeek, Date.ThisMonth, Date.ThisQuarter, Date.ThisYear.", # noqa: E501 + ] = None, + sort_currency_adjustment_list_by: Annotated[ + str | None, + "Specify the sorting criterion for the currency adjustment list. Options include: adjustment_date, exchange_rate, currency_code, debit_or_credit, or gain_or_loss.", # noqa: E501 + ] = None, + search_by_last_modified_time: Annotated[ + str | None, "Use a timestamp to filter adjustments by their last modified time." + ] = None, + fetch_page_number: Annotated[ + int | None, "The page number to fetch. Defaults to 1 if not specified." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to fetch per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_base_currency_adjustments'."]: + """Fetch base currency adjustments list from Zoho Books. + + This tool retrieves a list of base currency adjustments from Zoho Books. Call this tool when you need to obtain current base currency adjustments for accounting or financial reporting purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/basecurrencyadjustment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "filter_by": filter_by_date, + "sort_column": sort_currency_adjustment_list_by, + "last_modified_time": search_by_last_modified_time, + "page": fetch_page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_base_currency_adjustment_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization whose currency adjustment details are being retrieved.", # noqa: E501 + ], + base_currency_adjustment_identifier: Annotated[ + str, "Unique identifier of the base currency adjustment to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_base_currency_adjustment'."]: + """Retrieve base currency adjustment details by ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/basecurrencyadjustment/{base_currency_adjustment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + base_currency_adjustment_id=base_currency_adjustment_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_currency_adjustment( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization whose currency adjustment you want to delete." + ], + base_currency_adjustment_id: Annotated[ + str, "Unique identifier of the base currency adjustment to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_base_currency_adjustment'."]: + """Deletes the specified base currency adjustment. + + Use this tool to delete a specific base currency adjustment by providing its ID. Useful for managing and updating financial records.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/basecurrencyadjustment/{base_currency_adjustment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + base_currency_adjustment_id=base_currency_adjustment_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_currency_adjustment_accounts( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the currency adjustment accounts are needed." + ], + currency_id_for_adjustment: Annotated[ + str, + "ID of the currency to post an adjustment for. This specifies which currency is being adjusted.", # noqa: E501 + ], + adjustment_date: Annotated[ + str, "Specify the date for the currency adjustment in YYYY-MM-DD format." + ], + exchange_rate: Annotated[ + float, "Specify the exchange rate for the currency to affect transactions." + ], + adjustment_notes: Annotated[ + str, "Notes for the base currency adjustment, providing additional information or context." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'list_base_currency_adjustment_accounts'." +]: + """Retrieve accounts involved in currency adjustments. + + This tool retrieves a list of accounts that have transactions affected by a specified exchange rate. Use this to find financial accounts needing currency adjustment.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/basecurrencyadjustment/accounts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "currency_id": currency_id_for_adjustment, + "adjustment_date": adjustment_date, + "exchange_rate": exchange_rate, + "notes": adjustment_notes, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_vendor_bill( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in which the bill will be created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + attachment_file_path: Annotated[ + str | None, + "Path to the file to attach. Accepts GIF, PNG, JPEG, JPG, BMP, and PDF formats. 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 'create_bill'."]: + """Create a bill received from your vendor. + + Use this tool to log and manage invoices received from vendors by creating a bill in your system. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEVENDORBILL_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEVENDORBILL_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["CREATEVENDORBILL_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bills".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEVENDORBILL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "attachment": attachment_file_path, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_all_bills( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to specify which organization's bills to list.", # noqa: E501 + ], + filter_by_bill_number: Annotated[ + str | None, + "Filter bills using the bill number. Use exact matches, prefix with 'bill_number_startswith', or substring with 'bill_number_contains'.", # noqa: E501 + ] = None, + filter_by_reference_number: Annotated[ + str | None, + "Filter bills by reference number. Supports exact matches, prefix matching using `reference_number_startswith`, and substring matching using `reference_number_contains`. Useful for finding bills by external references or vendor invoice numbers.", # noqa: E501 + ] = None, + bill_date_filter: Annotated[ + str | None, + "Filter bills by bill date in YYYY-MM-DD format. Use for specific dates, date ranges (date_start/date_end), or relative dates (date_before/date_after).", # noqa: E501 + ] = None, + filter_by_status: Annotated[ + str | None, + "Specify the status of bills to filter by. Options include 'paid', 'open', 'overdue', 'void', or 'partially_paid'.", # noqa: E501 + ] = None, + filter_by_description_text: Annotated[ + str | None, + "Filter bills using description text. Supports exact matches, prefix matching with 'description_startswith', or substring matching with 'description_contains'. Useful for finding bills by line item descriptions or vendor notes.", # noqa: E501 + ] = None, + filter_by_vendor_name: Annotated[ + str | None, + "Filter bills by vendor name. Use prefix matching with 'vendor_name_startswith' or substring matching with 'vendor_name_contains'.", # noqa: E501 + ] = None, + filter_by_total_amount: Annotated[ + float | None, + "Filter bills by total amount using conditions like less than, greater than, etc. Specify conditions using keys like 'total_less_than' or 'total_greater_than'.", # noqa: E501 + ] = None, + filter_by_vendor_id: Annotated[ + int | None, + "Unique identifier to filter bills by a specific vendor, retrieving all related bills.", + ] = None, + filter_by_item_id: Annotated[ + int | None, + "Filter bills by a specific item ID. Retrieves all bills containing a particular product or service item based on its unique identifier.", # noqa: E501 + ] = None, + recurring_bill_identifier: Annotated[ + int | None, + "Filter bills by a specific recurring bill ID to retrieve all bills generated from a recurring template or schedule.", # noqa: E501 + ] = None, + filter_by_purchase_order_id: Annotated[ + int | None, + "Specify the Purchase Order ID to filter bills associated with a specific order. Helps track procurement workflows.", # noqa: E501 + ] = None, + filter_by_last_modified_time: Annotated[ + str | None, + "Filter bills by last modification timestamp using ISO 8601 format (YYYY-MM-DDTHH:MM:SS+/-HHMM) to find bills modified at or after a specific time.", # noqa: E501 + ] = None, + bill_status_filter: Annotated[ + str | None, + "Filter bills by status. Options: Status.All, Status.PartiallyPaid, Status.Paid, Status.Overdue, Status.Void, Status.Open.", # noqa: E501 + ] = None, + search_text: Annotated[ + str | None, + "Filter bills using general text across bill number, reference number, and vendor name to find matches. Useful for quick searches.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, "Specify the page number for pagination to navigate multiple pages of bills." + ] = None, + bills_per_page: Annotated[ + int | None, + "Specify the number of bills to retrieve per page. Default is 200, but adjustable for performance needs and rate limits.", # noqa: E501 + ] = 200, + sort_by_column: Annotated[ + str | None, + "Specify the column to sort bills by. Available options: vendor_name, bill_number, date, due_date, total, balance, created_time.", # noqa: E501 + ] = None, + sorting_order: Annotated[ + str | None, "Specify the sort order for bills: 'A' for ascending, 'D' for descending." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_bills'."]: + """Retrieve all bills with pagination support. + + This tool is used to list all bills available in the system, providing pagination information to navigate through large datasets. It should be called whenever there's a need to view or analyze billing details over multiple pages.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "bill_number": filter_by_bill_number, + "reference_number": filter_by_reference_number, + "date": bill_date_filter, + "status": filter_by_status, + "description": filter_by_description_text, + "vendor_name": filter_by_vendor_name, + "total": filter_by_total_amount, + "vendor_id": filter_by_vendor_id, + "item_id": filter_by_item_id, + "recurring_bill_id": recurring_bill_identifier, + "purchaseorder_id": filter_by_purchase_order_id, + "last_modified_time": filter_by_last_modified_time, + "filter_by": bill_status_filter, + "search_text": search_text, + "page": page_number, + "per_page": bills_per_page, + "sort_column": sort_by_column, + "sort_order": sorting_order, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_bill_by_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the bill is to be updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_identifier_key: Annotated[ + str | None, + "Specify the API name of the custom field with unique values for identifying the bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_field_unique_value: Annotated[ + str | None, + "Provide the unique value from the custom field to identify and update the specific bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + enable_upsert: Annotated[ + bool | None, + "Set to true to enable upsert functionality. Creates a new bill if no existing bill matches the custom field value. 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_bill_using_custom_field'."]: + """Update or create a bill using a custom field identifier. + + Use this tool to update an existing bill or create a new one by specifying a custom field's unique value. The tool retrieves the bill based on the custom field value provided. If the bill is not found and the X-Upsert option is enabled, a new bill will be created with the provided details. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEBILLBYCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEBILLBYCUSTOMFIELD_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["UPDATEBILLBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bills".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEBILLBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_identifier_key, + "X-Unique-Identifier-Value": custom_field_unique_value, + "X-Upsert": enable_upsert, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_bill_in_zoho( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. Required for updating a bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bill_unique_identifier: Annotated[ + str | None, + "The unique identifier for the bill to be updated in Zoho Books. Ensure this matches the bill you intend to modify. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + file_attachment: Annotated[ + str | None, + "File to attach. Allowed extensions: gif, png, jpeg, jpg, bmp, pdf. 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_bill'."]: + """Updates a bill by modifying details in Zoho Books. + + This tool is used to update a bill in Zoho Books. It allows you to modify details or remove line items by excluding them from the list. Call this tool when you need to make changes to an existing bill. + + 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["UPDATEBILLINZOHO_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bill_unique_identifier: + missing_params.append(("bill_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEBILLINZOHO_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["UPDATEBILLINZOHO_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bills/{bill_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_unique_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEBILLINZOHO_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "attachment": file_attachment, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_bill_details( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization for which the bill details are being retrieved." + ], + bill_identifier: Annotated[ + str, + "Unique identifier of the bill to retrieve its details. This should be provided as a string.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_bill'."]: + """Retrieve the details of a specific bill. + + Use this tool to get comprehensive details about a specific bill by providing its ID. Useful for retrieving bill information such as amount, due date, or vendor details.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_existing_bill( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization in Zoho Books needed to delete the bill." + ], + bill_identifier: Annotated[str, "The unique identifier of the bill you wish to delete."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_bill'."]: + """Deletes an existing bill if no payments are applied. + + Call this tool to delete a bill in Zoho Books if the bill has no payments applied. It confirms successful deletion of the bill.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_custom_fields_in_bill( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the bill's custom fields are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bill_identifier: Annotated[ + str | None, + "Unique identifier of the bill to update its custom fields. 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_custom_fields_in_bill'."]: + """Update custom fields in existing bills. + + This tool is used to update the value of custom fields in existing bills. It should be called when you need to change or add information to the custom fields of a specific bill identified by its bill ID. + + 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[ + "UPDATECUSTOMFIELDSINBILL_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bill_identifier: + missing_params.append(("bill_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECUSTOMFIELDSINBILL_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["UPDATECUSTOMFIELDSINBILL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bill/{bill_id}/customfields".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECUSTOMFIELDSINBILL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_bill_void( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. Used to specify which organization's bill should be marked as void.", # noqa: E501 + ], + bill_identifier: Annotated[str, "Unique identifier of the bill to mark as void in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_bill_void'."]: + """Mark a bill as void in Zoho Books. + + Use this tool to update the status of a bill to void in Zoho Books when you need to cancel or invalidate a bill.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/status/void".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_bill_open( + context: ToolContext, + organization_id: Annotated[ + str, "Provide the ID of the organization in Zoho Books to mark the bill as open." + ], + bill_id: Annotated[str, "Unique identifier of the bill to mark as open in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_bill_open'."]: + """Mark a void bill as open in Zoho Books. + + Use this tool to change the status of a void bill to open in Zoho Books. Call this tool when you need to reactivate a bill that was previously voided.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/status/open".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def submit_bill_for_approval( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization in Zoho Books for which the bill is being submitted." + ], + bill_identifier: Annotated[str, "Unique identifier of the bill to be submitted for approval."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit_bill'."]: + """Submit a bill for approval in Zoho Books. + + Use this tool to submit a specific bill for approval in Zoho Books by providing the bill ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/submit".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def approve_bill( + context: ToolContext, + organization_identifier: Annotated[ + str, "ID of the organization for which the bill needs approval." + ], + bill_identifier: Annotated[str, "Unique identifier of the bill to be approved in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'approve_bill'."]: + """Approve a bill in Zoho Books. + + This tool approves a specified bill in Zoho Books. It should be used when you need to change the status of a bill to approved.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/approve".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_billing_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the billing address is being updated. This identifier is necessary to access specific organizational data. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bill_unique_identifier: Annotated[ + str | None, + "Provide the unique identifier for the bill to update its billing address. 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_bill_billing_address'."]: + """Updates the billing address for a specified bill. + + This tool is used to update the billing address associated with a specific bill. It should be called when there's a need to modify the billing address details of an existing bill. + + 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["UPDATEBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bill_unique_identifier: + missing_params.append(("bill_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEBILLINGADDRESS_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["UPDATEBILLINGADDRESS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bills/{bill_id}/address/billing".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_unique_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_bill_payments_list( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization for which to retrieve bill payments." + ], + bill_identifier: Annotated[ + str, "Unique identifier for the specific bill to retrieve payment details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_bill_payments'."]: + """Retrieve the list of payments made for a specific bill. + + This tool provides a list of all payments made for a specified bill using the bill ID. It should be called when you need to view detailed payment history for a particular bill.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/payments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def apply_vendor_credits_to_bill( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization where credits are being applied. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bill_identifier: Annotated[ + str | None, + "Unique identifier for the bill to apply credits to. 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 'apply_credits_to_bill'."]: + """Apply vendor credits to a bill. + + This tool applies vendor credits from excess payments to a specified bill. It is useful for managing accounts and applying multiple credits at once. + + 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[ + "APPLYVENDORCREDITSTOBILL_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not bill_identifier: + missing_params.append(("bill_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["APPLYVENDORCREDITSTOBILL_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["APPLYVENDORCREDITSTOBILL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bills/{bill_id}/credits".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["APPLYVENDORCREDITSTOBILL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_bill_payment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books for which the bill payment is to be deleted.", # noqa: E501 + ], + bill_identifier: Annotated[str, "Unique identifier of the bill to be deleted."], + bill_payment_identifier: Annotated[str, "Unique identifier of the bill payment to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_bill_payment'."]: + """Delete a payment made to a bill. + + Use this tool to delete an existing payment associated with a bill when necessary. It helps in managing and correcting payment records in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/payments/{bill_payment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + bill_id=bill_identifier, + bill_payment_id=bill_payment_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_bill_attachment( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization to specify which organization's bill attachment to retrieve." + ], + bill_identifier: Annotated[ + str, "The unique identifier of the bill to retrieve its attachment." + ], + get_thumbnail: Annotated[ + bool | None, "Set to true to get the thumbnail of the attachment instead of the full file." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_bill_attachment'."]: + """Retrieve the attachment from a specific bill. + + Call this tool to get the file attached to a bill using its bill ID. Useful for accessing invoices or related documents stored in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id, "preview": get_thumbnail}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def attach_file_to_bill( + context: ToolContext, + organization_identifier: Annotated[ + str, "The ID of the organization in Zoho Books to which the bill belongs." + ], + bill_id: Annotated[ + str, + "Unique identifier of the bill for which the file will be attached. Use this to specify the target bill in Zoho Books.", # noqa: E501 + ], + file_attachment: Annotated[ + str | None, "File to attach to the bill. Accepted formats: gif, png, jpeg, jpg, bmp, pdf." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'add_bill_attachment'."]: + """Attach a file to a specific bill. + + Use this tool to attach a file to a specific bill in Zoho Books. It should be called when you need to upload and associate documents, such as receipts or invoices, with a bill.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_id + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_identifier, + "attachment": file_attachment, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_bill_attachment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization within Zoho Books. This is required to specify which organization's bill attachment is to be deleted.", # noqa: E501 + ], + bill_unique_identifier: Annotated[ + str, "Unique identifier for the specific bill whose attachment is to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_bill_attachment'."]: + """Delete the file attached to a specific bill. + + This tool deletes the file attached to a specified bill in Zoho Books. It should be called when there's a need to remove an attachment associated with a bill.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_unique_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_bill_history( + context: ToolContext, + organization_id: Annotated[ + str, + "String identifier for the organization whose bill history and comments you wish to retrieve.", # noqa: E501 + ], + bill_identifier: Annotated[ + str, "Unique identifier of the bill to retrieve its history and comments." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_bill_comments'."]: + """Retrieve the complete history and comments for a bill. + + This tool retrieves the entire history and comments associated with a specified bill. It is useful for reviewing past interactions and notes on a bill.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_comment_to_bill( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique identifier of the organization in Zoho Books. Required to specify which organization's bill to comment on. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bill_identifier: Annotated[ + str | None, + "Unique identifier for the bill to add a comment. 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_bill_comment'."]: + """Add a comment to a specific bill in Zoho Books. + + Use this tool to add a comment to a bill identified by its ID in Zoho Books. Useful for internal notes or communication about a bill. + + 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["ADDCOMMENTTOBILL_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not bill_identifier: + missing_params.append(("bill_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["ADDCOMMENTTOBILL_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["ADDCOMMENTTOBILL_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/bills/{bill_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), bill_id=bill_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDCOMMENTTOBILL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_bill_comment( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization from which the bill comment will be deleted." + ], + bill_identifier: Annotated[ + str, + "The unique identifier for the bill from which the comment will be deleted. This ID is necessary to specify the correct bill in Zoho Books.", # noqa: E501 + ], + comment_id: Annotated[str, "Unique identifier of the comment to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_bill_comment'."]: + """Delete a specific comment from a bill in Zoho Books. + + Use this tool to remove a comment from a specific bill in Zoho Books when the comment is no longer needed or was made in error.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/{bill_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + bill_id=bill_identifier, + comment_id=comment_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def convert_purchase_order_to_bill( + context: ToolContext, + organization_id: Annotated[ + str, "Enter the ID of the organization for which the bill will be created." + ], + purchase_order_ids: Annotated[ + str, "Comma-separated IDs of the purchase orders to be converted into a bill." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'convert_purchase_order_to_bill'."]: + """Fetch bill payload from purchase orders. + + This tool retrieves the bill payload for selected purchase orders using their IDs. It should be called when you want to convert purchase orders into a bill. After obtaining the payload, use it to create a bill in the system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/bills/editpage/frompurchaseorders".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "purchaseorder_ids": purchase_order_ids, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_chart_of_account( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the account is being created. 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 'create_chart_of_account'."]: + """Creates an account with a specified account type. + + This tool is used to create a new account within the chart of accounts by specifying the type of account desired. It is suitable when setting up financial frameworks or managing accounting structures. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATECHARTOFACCOUNT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECHARTOFACCOUNT_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["CREATECHARTOFACCOUNT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/chartofaccounts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECHARTOFACCOUNT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_chart_of_accounts( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization to retrieve chart of accounts for."], + account_type_filter: Annotated[ + str | None, + "Filter accounts based on type and status. Options: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income, AccountType.Expense.", # noqa: E501 + ] = None, + sort_accounts_by: Annotated[ + str | None, "Specify how to sort the accounts. Options: 'account_name', 'account_type'." + ] = None, + last_modified_time_filter: Annotated[ + str | None, + "Fetch accounts modified since a specific timestamp, formatted as YYYY-MM-DDTHH:MM:SSZ.", + ] = None, + page_number: Annotated[int | None, "Specify the page number to retrieve. Default is 1."] = 1, + records_per_page: Annotated[ + int | None, "Number of records to retrieve per page. Defaults to 200 if not specified." + ] = 200, + include_balance: Annotated[ + bool | None, "Include current account balances in the response when set to true." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_chart_of_accounts'."]: + """Retrieve a list of all chart of accounts. + + Use this tool to obtain a complete list of chart of accounts with pagination support. Ideal for financial data management.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/chartofaccounts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "showbalance": include_balance, + "filter_by": account_type_filter, + "sort_column": sort_accounts_by, + "last_modified_time": last_modified_time_filter, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_account_info( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The ID of the organization for which the account will be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + account_identifier: Annotated[ + str | None, + "Unique identifier for the account to update in Zoho Books. 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_chart_of_account'."]: + """Updates account information in Zoho Books. + + This tool updates the chart of account details for a specified account in Zoho Books. It should be called when account information needs modification, such as changing account names, codes, or related details. + + 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["UPDATEACCOUNTINFO_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not account_identifier: + missing_params.append(("account_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEACCOUNTINFO_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["UPDATEACCOUNTINFO_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/chartofaccounts/{account_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=account_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEACCOUNTINFO_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_account_details( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization to which the account belongs." + ], + account_unique_id: Annotated[str, "Unique identifier for the account details request."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_chart_of_account'."]: + """Retrieve detailed information for a specified account. + + This tool is used to obtain detailed information about a specific account from the chart of accounts. It should be called when you need to access account specifics such as account name, type, and other related details.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/chartofaccounts/{account_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=account_unique_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_account( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier of the organization in Zoho Books."], + account_identifier: Annotated[ + str, "The unique identifier for the account to be deleted in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_chart_of_account'."]: + """Delete a chart of account in Zoho Books. + + Use this tool to delete an existing chart of account. Note that accounts associated with transactions or products cannot be deleted.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/chartofaccounts/{account_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=account_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def activate_chart_of_account( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books that needs the account to be activated.", + ], + account_unique_identifier: Annotated[ + str, "Unique identifier of the account to be activated in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_chart_of_account_active'."]: + """Activate a chart of account in Zoho Books. + + Use this tool to update the status of a chart of account to active in Zoho Books. This is useful when you need to ensure an account is reactivated and available for transactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/chartofaccounts/{account_id}/active".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + account_id=account_unique_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def deactivate_chart_of_account( + context: ToolContext, + organization_identifier: Annotated[ + str, "ID of the organization to deactivate the chart of account for." + ], + account_identifier: Annotated[str, "The unique identifier of the account to be deactivated."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_chart_of_account_inactive'."]: + """Deactivate a specific chart of account. + + Use this tool to mark a specific chart of account as inactive in Zoho Books. This is helpful when you need to manage account statuses and ensure they reflect current business requirements.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/chartofaccounts/{account_id}/inactive".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), account_id=account_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_account_transactions( + context: ToolContext, + organization_id: Annotated[ + str, "Unique identifier for the organization whose account transactions are being queried." + ], + account_id: Annotated[str, "The unique ID of the account to retrieve transactions for."], + transaction_date_range: Annotated[ + str | None, + "Specify a date range for searching transactions. Use 'yyyy-mm-dd' format. Supports 'date.start', 'date.end', 'date.before', and 'date.after'.", # noqa: E501 + ] = None, + amount_range: Annotated[ + float | None, + "Specify the amount range to filter account transactions. Use fields like less_than, less_equals, greater_than, and greater_equals to define the criteria.", # noqa: E501 + ] = None, + filter_by_account_type: Annotated[ + str | None, + "Filter accounts based on account type and status. Options: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income, AccountType.Expense.", # noqa: E501 + ] = None, + transaction_type: Annotated[ + str | None, "Filter transactions by type, such as 'invoice', 'expense', or 'refund'." + ] = None, + sort_by: Annotated[ + str | None, + "Specify the column to sort transactions. Possible values: 'account_name', 'account_type'.", + ] = None, + page_number: Annotated[ + int | None, + "Page number to be fetched for the transaction list. Defaults to 1 if not specified.", + ] = 1, + records_per_page: Annotated[ + int | None, + "Number of records to be fetched per page. Default is 200. Specify a custom integer to override.", # noqa: E501 + ] = 200, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'list_chart_of_account_transactions'." +]: + """Retrieve transactions for a specified account. + + Use this tool to list all transactions associated with a given account. Ideal for tracking financial activities related to specific accounts.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/chartofaccounts/transactions".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "account_id": account_id, + "date": transaction_date_range, + "amount": amount_range, + "filter_by": filter_by_account_type, + "transaction_type": transaction_type, + "sort_column": sort_by, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_transaction( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books for which the transaction will be deleted.", # noqa: E501 + ], + transaction_identifier: Annotated[ + str, "Unique identifier for the transaction to be deleted in Zoho Books." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'delete_chart_of_account_transaction'." +]: + """Delete a specified accounting transaction. + + This tool is used to delete a specified transaction from the chart of accounts in Zoho Books. Call this tool when you need to remove a transaction permanently.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/chartofaccounts/transactions/{transaction_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + transaction_id=transaction_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_contact_person( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization where the contact person will be created. 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 'create_contact_person'."]: + """Create a contact person for a contact in Zoho Books. + + Use this tool to add a new contact person associated with a contact in Zoho Books. It facilitates managing additional contact person details within the platform. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATECONTACTPERSON_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECONTACTPERSON_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["CREATECONTACTPERSON_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts/contactpersons".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECONTACTPERSON_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_contact_person( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID representing the organization whose contact person is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + contact_person_identifier: Annotated[ + str | None, + "Unique identifier for the contact person to be updated. 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_contact_person'."]: + """Update an existing contact person's details. + + Use this tool to update the details of an existing contact person in the system. This is useful when changes to contact information are needed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATECONTACTPERSON_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not contact_person_identifier: + missing_params.append(("contact_person_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECONTACTPERSON_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["UPDATECONTACTPERSON_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts/contactpersons/{contact_person_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_person_id=contact_person_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECONTACTPERSON_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_contact_person( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization to identify which entity the contact person belongs to.", + ], + contact_person_id: Annotated[str, "Unique identifier for the contact person to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_contact_person'."]: + """Delete an existing contact person from the records. + + Use this tool to remove a contact person using their unique ID from the records. It should be called when a user's contact details are no longer needed or need to be removed for any reason.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/contactpersons/{contact_person_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_person_id=contact_person_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_contact_persons( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization for which the contact persons are being retrieved." + ], + contact_identifier: Annotated[ + str, "Unique identifier for the contact to retrieve associated persons." + ], + page_number: Annotated[ + int | None, "The page number to fetch when listing contact persons. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, + "Specifies the number of contact records to retrieve per page. The default is 200.", + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_contact_persons'."]: + """Retrieve contact persons for a given contact ID. + + Use this tool to list all contact persons associated with a specific contact ID, utilizing pagination.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/contactpersons".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_identifier + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_contact_person_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books. This identifies which organization the contact person belongs to.", # noqa: E501 + ], + contact_identifier: Annotated[str, "Unique identifier for the contact in Zoho Books."], + contact_person_identifier: Annotated[ + str, "Unique identifier of the contact person in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_contact_person'."]: + """Retrieve details of a specific contact person. + + Use this tool to get detailed information about a specific contact person associated with a given contact in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/contactpersons/{contact_person_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_id=contact_identifier, + contact_person_id=contact_person_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_primary_contact_person( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique identifier for the organization. This is required to specify which organization's contact is being updated.", # noqa: E501 + ], + contact_person_identifier: Annotated[ + str, "Unique identifier for the contact person to be marked as primary." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_contact_person_primary'."]: + """Mark a contact person as primary for a contact. + + Use this tool to designate a specific contact person as the primary contact for a particular contact. Useful for managing contact hierarchies within an organization.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/contactpersons/{contact_person_id}/primary".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_person_id=contact_person_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_business_contact( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization for which the contact is being created. 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 'create_contact'."]: + """Create a new business contact with comprehensive details. + + Use this tool to create a contact in Zoho Books with information such as name, company details, addresses, and more. This contact can be utilized for various business transactions like invoices and estimates. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEBUSINESSCONTACT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEBUSINESSCONTACT_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["CREATEBUSINESSCONTACT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEBUSINESSCONTACT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_contact_list( + context: ToolContext, + organization_identifier: Annotated[ + str, "Provide the ID of the organization to retrieve relevant contact data." + ], + filter_contact_by_type: Annotated[ + str | None, "Filter contacts by type. Accepts 'customer' or 'vendor'." + ] = None, + contact_name_filter: Annotated[ + str | None, + "Filter contacts by name. Use 'startswith' or 'contains' for match type. Max-length: 100 characters.", # noqa: E501 + ] = None, + search_by_company_name: Annotated[ + str | None, + "Search contacts by company name. Maximum length is 100 characters. Use variants like 'company_name_startswith' and 'company_name_contains' for different search methods.", # noqa: E501 + ] = None, + primary_contact_first_name: Annotated[ + str | None, + "Search contacts by the first name of the primary contact person. Use 'first_name_startswith' or 'first_name_contains'. Max-length 100.", # noqa: E501 + ] = None, + search_by_last_name: Annotated[ + str | None, + "Search contacts by last name of the primary contact person. Supports 'startswith' or 'contains' options. Max-length 100.", # noqa: E501 + ] = None, + address_search: Annotated[ + str | None, + "Search contacts by address field. Use 'address_startswith' or 'address_contains'. Max-length 100.", # noqa: E501 + ] = None, + email_search_criteria: Annotated[ + str | None, + "Search contacts by email of the primary contact person. Use 'startswith' or 'contains' in the string to specify the search variant. Max length is 100 characters.", # noqa: E501 + ] = None, + contact_phone_number: Annotated[ + str | None, + "Search contacts by primary contact's phone number. Supports 'startswith' and 'contains' variants. Max length of 100 characters.", # noqa: E501 + ] = None, + contact_status_filter: Annotated[ + str | None, + "Filter contacts by status. Options include All, Active, Inactive, Duplicate, PortalEnabled, PortalDisabled, OverDue, Unpaid, CreditLimitExceed, and Crm.", # noqa: E501 + ] = None, + search_contacts_text: Annotated[ + str | None, "Search contacts using contact name or notes. Maximum length is 100 characters." + ] = None, + sort_by_column: Annotated[ + str | None, + "Specify the column to sort contacts by. Allowed values: contact_name, first_name, last_name, email, outstanding_receivable_amount, created_time, and last_modified_time.", # noqa: E501 + ] = None, + crm_contact_id: Annotated[ + str | None, "CRM Contact ID to filter specific contact details." + ] = None, + crm_account_id: Annotated[ + str | None, + "Specify the CRM Account ID for the contact to retrieve specific contact details.", + ] = None, + crm_vendor_id: Annotated[ + str | None, "The CRM Vendor ID associated with the contact, used to filter results." + ] = None, + page_number_to_fetch: Annotated[ + int | None, "Specify the page number to be fetched. Defaults to 1 if not provided." + ] = 1, + records_per_page: Annotated[ + int | None, "The number of contact records to fetch per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_contacts'."]: + """Retrieve and filter a list of contacts from Zoho Books. + + Use this tool to obtain a detailed list of contacts with options for advanced filtering by name, company, status, and more. Ideal for managing contact information and accessing financial data like outstanding amounts and credit limits. Supports pagination for efficient data handling.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "contact_type": filter_contact_by_type, + "contact_name": contact_name_filter, + "company_name": search_by_company_name, + "first_name": primary_contact_first_name, + "last_name": search_by_last_name, + "address": address_search, + "email": email_search_criteria, + "phone": contact_phone_number, + "filter_by": contact_status_filter, + "search_text": search_contacts_text, + "sort_column": sort_by_column, + "zcrm_contact_id": crm_contact_id, + "zcrm_account_id": crm_account_id, + "zcrm_vendor_id": crm_vendor_id, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_contact_by_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization in Zoho Books. This is required to specify which organization's records to update or create. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_field_api_name: Annotated[ + str | None, + "The API name of the unique custom field used to identify the contact. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "The unique value of the custom field used to identify the contact. Must be a non-duplicate value. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_contact_if_not_found: Annotated[ + bool | None, + "Set to true to create a new contact if the unique custom field value isn't found. 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_contact_using_custom_field'." +]: + """Update a contact using a unique custom field value. + + This tool updates or creates a contact in Zoho Books based on a unique custom field value. Use it when you need to modify a contact using a non-duplicate custom field value, or create a new contact if the unique value isn't found and upsert is enabled. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATECONTACTBYCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECONTACTBYCUSTOMFIELD_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["UPDATECONTACTBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECONTACTBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": create_contact_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_business_contact( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization to which the contact belongs. This is required for identifying the organization context for the update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + contact_id: Annotated[ + str | None, + "Unique identifier for the contact to be updated. 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_contact'."]: + """Update detailed information for an existing business contact. + + Use this tool to modify comprehensive details of an existing contact, including addresses, contact persons, and payment terms. Useful for keeping contact information up-to-date with the latest business details. + + 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[ + "UPDATEBUSINESSCONTACT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not contact_id: + missing_params.append(("contact_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEBUSINESSCONTACT_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["UPDATEBUSINESSCONTACT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts/{contact_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEBUSINESSCONTACT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_contact_details( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique identifier of the organization for which the contact details are being retrieved.", # noqa: E501 + ], + contact_id: Annotated[ + str, "Unique identifier for the contact to retrieve detailed information." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_contact'."]: + """Retrieve comprehensive details of a specific contact. + + This tool should be called to access complete information about a contact, including basic details, addresses, payment terms, and financial data such as outstanding amounts and transaction history.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_contact( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization from which the contact will be deleted." + ], + contact_unique_identifier: Annotated[str, "Unique identifier of the contact to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_contact'."]: + """Delete an existing contact from the system.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_id=contact_unique_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def activate_contact( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization to which the contact belongs." + ], + contact_identifier: Annotated[str, "Unique identifier of the contact to be marked as active."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_contact_active'."]: + """Activate a contact in Zoho Books. + + Use this tool to mark a contact as active in Zoho Books. It should be called when a contact's status needs to be changed from inactive to active.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/active".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_contact_inactive( + context: ToolContext, + organization_identifier: Annotated[str, "The unique ID of the organization in Zoho Books."], + contact_identifier: Annotated[ + str, + "Unique identifier of the contact in Zoho Books. Required to specify which contact to mark as inactive.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_contact_inactive'."]: + """Mark a Zoho Books contact as inactive. + + Use this tool to mark a contact as inactive in Zoho Books, allowing for better organization and active contact management.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/inactive".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def enable_contact_portal_access( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization within Zoho Books, required to enable portal access for a contact. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + contact_unique_id: Annotated[ + str | None, + "Unique identifier for the specific contact whose portal access is to be enabled. 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 'enable_contact_portal'."]: + """Enable portal access for a specified contact in Zoho Books. + + Use this tool to enable portal access for a contact in Zoho Books, allowing them to interact with their account through the portal. + + 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[ + "ENABLECONTACTPORTALACCESS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not contact_unique_id: + missing_params.append(("contact_unique_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ENABLECONTACTPORTALACCESS_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["ENABLECONTACTPORTALACCESS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/portal/enable".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_unique_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ENABLECONTACTPORTALACCESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def enable_payment_reminder( + context: ToolContext, + organization_id: Annotated[ + str, "Provide the unique ID of the organization for which to enable payment reminders." + ], + contact_unique_identifier: Annotated[ + str, "Unique identifier of the contact for whom the payment reminder is enabled." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'enable_contact_payment_reminder'."]: + """Enable automated payment reminders for a contact. + + This tool is used to enable automated payment reminders for a specific contact, improving timely payment handling.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/paymentreminder/enable".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_id=contact_unique_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def disable_contact_payment_reminder( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books for which payment reminders will be disabled.", # noqa: E501 + ], + contact_unique_identifier: Annotated[ + str, "Unique identifier of the contact to disable payment reminders for." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'disable_contact_payment_reminder'." +]: + """Disable automated payment reminders for a contact. + + This tool is used to disable automated payment reminders for a specific contact in Zoho Books. It should be called when you want to stop the system from sending payment reminders to a particular contact.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/paymentreminder/disable".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_id=contact_unique_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def email_contact_statement( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Required to send the email statement to a specified contact. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + contact_identifier: Annotated[ + str | None, + "Unique identifier of the contact to send the statement to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + statement_start_date: Annotated[ + str | None, + "The starting date for the statement in the format [yyyy-mm-dd]. If omitted, the current month will be used. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + statement_end_date: Annotated[ + str | None, + "End date for the statement in the format [yyyy-mm-dd]. If not provided, the current month's statement will be sent. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + attachment_files: Annotated[ + str | None, + "Files to be attached with the statement email, in multipart/form-data format. 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 'email_contact_statement'."]: + """Sends an email statement to a specified contact. + + This tool triggers an email statement to be sent to a specific contact using Zoho Books. If no JSON input is provided, the email will use default content. Use this tool when you need to send financial statements to clients or contacts. + + 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[ + "EMAILCONTACTSTATEMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not contact_identifier: + missing_params.append(("contact_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["EMAILCONTACTSTATEMENT_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["EMAILCONTACTSTATEMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/statements/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EMAILCONTACTSTATEMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "start_date": statement_start_date, + "end_date": statement_end_date, + "multipart_or_formdata": attachment_files, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_contact_statement_mail_content( + context: ToolContext, + organization_identifier: Annotated[ + str, "ID of the organization to retrieve statement mail content for the contact." + ], + contact_unique_identifier: Annotated[ + str, "Unique identifier for the contact to retrieve the statement mail content." + ], + statement_start_date: Annotated[ + str | None, + "Start date for the statement. Use format [yyyy-mm-dd]. Defaults to current month if not provided.", # noqa: E501 + ] = None, + statement_end_date: Annotated[ + str | None, "End date for the statement in the format [yyyy-mm-dd]." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_contact_statement_mail'."]: + """Retrieve the statement email content for a contact. + + Use this tool to get the content of a statement email for a specified contact in Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/statements/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_id=contact_unique_identifier, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "start_date": statement_start_date, + "end_date": statement_end_date, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def send_email_to_contact( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization to which the contact belongs. It is required for sending the email. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + contact_id: Annotated[ + str | None, + "Unique identifier for the contact to send the email to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + send_customer_statement_with_email: Annotated[ + bool | None, + "Indicate if a customer statement PDF should be sent with the email. Use 'true' to send, 'false' otherwise. 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 'email_contact'."]: + """Send an email directly to a specified contact. + + Use this tool to send an email to a contact by specifying their contact ID. Ideal for communicating directly with contacts via email. + + 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["SENDEMAILTOCONTACT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not contact_id: + missing_params.append(("contact_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SENDEMAILTOCONTACT_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["SENDEMAILTOCONTACT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SENDEMAILTOCONTACT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_identifier, + "send_customer_statement": send_customer_statement_with_email, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_contact_activity_recent_comments( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization whose contact comments you want to retrieve.", + ], + contact_unique_identifier: Annotated[ + str, "Unique identifier of the contact to retrieve recent comments." + ], + page_number_to_fetch: Annotated[ + int | None, "Page number to be fetched. Defaults to 1 if not specified." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to be fetched per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_contact_comments'."]: + """Retrieve recent comments for a specific contact. + + Use this tool to get a list of recent comments or activities associated with a specific contact in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_id=contact_unique_identifier, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_contact_addresses( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization in Zoho Books. This ID is necessary to fetch the contact's addresses within the specified organization.", # noqa: E501 + ], + contact_id: Annotated[str, "Unique identifier of the contact in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_contact_address'."]: + """Retrieve addresses for a specified contact. + + Get the shipping, billing, and additional addresses of a specific contact in Zoho Books. This tool is useful for retrieving address details when needing to display or utilize contact information in applications.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/address".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_contact_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization for which the contact address will be added. This is required to specify the target organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + contact_id: Annotated[ + str | None, + "The unique identifier for the contact to which an address 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_contact_address'."]: + """Add an additional address to a contact in Zoho Books. + + Use this tool to append a new address to an existing contact in Zoho Books. Suitable when updating contact details with more location information. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["ADDCONTACTADDRESS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not contact_id: + missing_params.append(("contact_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDCONTACTADDRESS_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["ADDCONTACTADDRESS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/address".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDCONTACTADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_contact_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. This is required to specify which organization's contact address needs updating. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + contact_identifier: Annotated[ + str | None, + "Unique identifier of the contact to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + address_identifier: Annotated[ + str | None, + "Unique identifier of the address to be updated. 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_contact_address'."]: + """Edit the additional address of a contact. + + Use this tool to update the additional address associated with a contact in Zoho Books. It requires the contact ID and address ID to specify the contact and address to be updated. + + 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["UPDATECONTACTADDRESS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not contact_identifier: + missing_params.append(("contact_identifier", "path")) + if not address_identifier: + missing_params.append(("address_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECONTACTADDRESS_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["UPDATECONTACTADDRESS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/address/{address_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_id=contact_identifier, + address_id=address_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECONTACTADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_contact_address( + context: ToolContext, + organization_id: Annotated[ + str, "Unique ID of the organization in Zoho Books required for address deletion." + ], + contact_unique_id: Annotated[ + str, "Unique identifier for the contact whose address you want to delete." + ], + address_identifier: Annotated[ + str, "Unique identifier of the address to be deleted for the specified contact." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_contact_address'."]: + """Deletes an additional address of a contact. + + This tool deletes an additional address of a specific contact in Zoho Books when given the contact and address IDs. Use it to manage contact address details.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/address/{address_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_id=contact_unique_id, + address_id=address_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_contact_refund_history( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books. Required to access the specific account data.", # noqa: E501 + ], + contact_unique_identifier: Annotated[ + str, "Unique identifier of the contact in Zoho Books for refund history retrieval." + ], + page_number: Annotated[ + int | None, "The page number to fetch for the contact's refund history. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Specifies how many refund records to fetch per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_contact_refunds'."]: + """Retrieve the refund history of a specific contact. + + Use this tool to get a list of all refunds associated with a particular contact in Zoho Books. This can be useful for financial reconciliations or customer service inquiries related to refund transactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + contact_id=contact_unique_identifier, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def track_contact_for1099_reporting( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique identifier for the organization in Zoho Books required for 1099 reporting. This should be the ID specific to the organization tracked in the U.S.A.", # noqa: E501 + ], + contact_unique_id: Annotated[str, "Unique identifier of the contact for 1099 tracking."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'track_contact_1099'."]: + """Track a contact for 1099 reporting in Zoho Books. + + Use this tool to track a contact for 1099 reporting, applicable only when the organization's country is the U.S.A. Ideal for ensuring contacts meet 1099 requirements in financial records.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/track1099".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_unique_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def stop1099_tracking_for_vendor( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization where 1099 tracking will be stopped." + ], + vendor_contact_id: Annotated[ + str, "Unique identifier of the vendor contact to stop 1099 tracking." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'untrack_contact_1099'."]: + """Stop 1099 payment tracking for a vendor in the U.S. + + Use to disable 1099 reporting for vendor payments in the U.S. organization.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/untrack1099".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=vendor_contact_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_unused_retainer_payments( + context: ToolContext, + organization_id: Annotated[ + str, "Unique identifier for the organization to filter retainer payments." + ], + contact_id: Annotated[ + str, + "The unique identifier for the contact whose unused retainer payments are being retrieved. This is required to specify which contact's data you want to access.", # noqa: E501 + ], + filter_by_currency_id: Annotated[ + str | None, "Currency ID to filter unused retainer payments by a specific currency." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_unused_retainer_payments'."]: + """Retrieve unused retainer payments for a contact. + + Fetch details of unused retainer payments associated with a specific contact, providing insight into available credit balances.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/contacts/{contact_id}/receivables/unusedretainerpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), contact_id=contact_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "currency_id": filter_by_currency_id, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_credit_note( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the credit note is being created. Required for identifying the correct entity within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_id: Annotated[ + str | None, + "Invoice ID for the required invoice to associate with the credit note. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + use_custom_credit_note_number: Annotated[ + bool | None, + "Set to true to provide your own credit note number, bypassing auto-numbering. 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 'create_credit_note'."]: + """Create a new credit note for customer adjustments. + + Use this tool to create a credit note when issuing credits to customers for reasons such as returned items, overpayments, or necessary adjustments. It supports multi-currency, custom line items, tax calculations, and workflows. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATECREDITNOTE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATECREDITNOTE_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["CREATECREDITNOTE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECREDITNOTE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "invoice_id": invoice_id, + "ignore_auto_number_generation": use_custom_credit_note_number, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_credit_notes( + context: ToolContext, + organization_id: Annotated[ + str, + "ID of the organization for which you want to list credit notes. Required for identification and retrieval.", # noqa: E501 + ], + credit_note_number: Annotated[ + str | None, + "Filter credit notes by a specific credit note number. The number must be a unique identifier, up to 100 characters.", # noqa: E501 + ] = None, + filter_date: Annotated[ + str | None, + "Filter credit notes by the date they were raised. Use yyyy-mm-dd format to search for specific credit notes.", # noqa: E501 + ] = None, + filter_by_status: Annotated[ + str | None, + "Specify the status to filter credit notes. Options include: 'open', 'closed', 'void', or 'draft'.", # noqa: E501 + ] = None, + filter_by_total_amount: Annotated[ + float | None, + "Filter credit notes by their total amount. Input a specific total value to retrieve matching credit notes.", # noqa: E501 + ] = None, + filter_by_reference_number: Annotated[ + str | None, "Filter credit notes by their reference number, limited to 100 characters." + ] = None, + filter_by_customer_name: Annotated[ + str | None, + "Filter credit notes by customer name. Use to search for credit notes associated with a specific customer. Max-Length is 100 characters.", # noqa: E501 + ] = None, + filter_by_item_name: Annotated[ + str | None, "Search for credit notes by item name. Maximum length is 100 characters." + ] = None, + filter_by_customer_id: Annotated[ + str | None, + "Search for credit notes associated with a specific customer using the customer ID. Retrieve customer IDs from the contacts API.", # noqa: E501 + ] = None, + filter_by_item_description: Annotated[ + str | None, + "Filter credit notes by item description. Use 'startswith:' or 'contains:' for flexible matching. Max length of 100 characters.", # noqa: E501 + ] = None, + filter_by_item_id: Annotated[ + str | None, + "Filter credit notes by item ID to find notes containing a specific item. Obtain item IDs from the items API.", # noqa: E501 + ] = None, + filter_by_line_item_id: Annotated[ + str | None, "Search for credit notes containing a specific line item using its ID." + ] = None, + filter_by_tax_id: Annotated[ + str | None, + "Filter credit notes using a specific tax ID. Retrieve the tax ID from the taxes API.", + ] = None, + status_filter: Annotated[ + str | None, + "Filter credit notes by status using predefined values: 'Status.All', 'Status.Open', 'Status.Draft', 'Status.Closed', 'Status.Void'.", # noqa: E501 + ] = None, + search_text: Annotated[ + str | None, + "Search credit notes across multiple fields like credit note number, customer name, and reference number. Max-length is 100 characters.", # noqa: E501 + ] = None, + sort_credit_notes_by_column: Annotated[ + str | None, + "Specify the column by which to sort the credit notes. Allowed values: 'customer_name', 'creditnote_number', 'balance', 'total', 'date', and 'created_time'.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, + "Page number for pagination. Specify which page of results to retrieve. Default is 1.", + ] = 1, + records_per_page: Annotated[ + int | None, + "Specify the number of credit notes to be returned per page for pagination. Default is 200.", # noqa: E501 + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_credit_notes'."]: + """Retrieve and filter a list of credit notes. + + Retrieve a paginated list of credit notes using filters and sorting based on date, status, amount, customer details, items, taxes, and custom fields.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "creditnote_number": credit_note_number, + "date": filter_date, + "status": filter_by_status, + "total": filter_by_total_amount, + "reference_number": filter_by_reference_number, + "customer_name": filter_by_customer_name, + "item_name": filter_by_item_name, + "customer_id": filter_by_customer_id, + "item_description": filter_by_item_description, + "item_id": filter_by_item_id, + "line_item_id": filter_by_line_item_id, + "tax_id": filter_by_tax_id, + "filter_by": status_filter, + "search_text": search_text, + "sort_column": sort_credit_notes_by_column, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_credit_note_with_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization to which the credit note belongs. This identifies the target organization for the update or creation operation. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_key: Annotated[ + str | None, + "The API name of the unique custom field used to identify the credit note. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_field_unique_value: Annotated[ + str | None, + "The unique value for the custom field used to identify the credit note to update or create. Ensure this matches the specific custom field's unique value constraints. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_new_credit_note_if_not_found: Annotated[ + bool | None, + "Set to true to create a new credit note if the unique custom field value isn't found in existing credit notes. 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_credit_note_using_custom_field'." +]: + """Update or create a credit note using a custom field. + + Use this tool to modify an existing credit note or create a new one with unique values in custom fields. If the specified unique value doesn't match any existing credit note and upsert is enabled, a new credit note will be created given the necessary details. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATECREDITNOTEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECREDITNOTEWITHCUSTOMFIELD_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["UPDATECREDITNOTEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECREDITNOTEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_key, + "X-Unique-Identifier-Value": custom_field_unique_value, + "X-Upsert": create_new_credit_note_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_credit_note_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Required to specify which organization's credit note to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + credit_note_unique_identifier: Annotated[ + str | None, + "Unique identifier for the credit note to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to provide your own credit note number instead of using the auto-generated one. 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_credit_note'."]: + """Update details of an existing credit note. + + + + 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[ + "UPDATECREDITNOTEDETAILS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not credit_note_unique_identifier: + missing_params.append(("credit_note_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECREDITNOTEDETAILS_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["UPDATECREDITNOTEDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_unique_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECREDITNOTEDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "ignore_auto_number_generation": ignore_auto_number_generation, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_credit_note_details( + context: ToolContext, + organization_identifier: Annotated[str, "The unique ID of the organization in Zoho Books."], + credit_note_id: Annotated[ + str, + "The unique identifier of the credit note to retrieve details for. This ID is essential for accessing the specific credit note information.", # noqa: E501 + ], + response_format: Annotated[ + str | None, + "Specify the format of the credit note details: json, pdf, or html. Default is html.", + ] = None, + export_with_default_print_option: Annotated[ + bool | None, + "Specify whether to export the credit note PDF with the default print option. Use 'true' or 'false'.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_credit_note'."]: + """Retrieve details of a specific credit note using its ID. + + Call this tool to obtain detailed information about an existing credit note by providing its unique identifier. Useful for tracking, reviewing, or managing credit notes within Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "print": export_with_default_print_option, + "accept": response_format, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_credit_note( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization whose credit note you wish to delete." + ], + credit_note_id: Annotated[str, "Unique identifier of the credit note to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_credit_note'."]: + """Delete an existing credit note using its ID. + + Use this tool to delete a specific credit note by providing its unique ID. This action is irreversible.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def email_credit_note( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "ID of the organization for which the credit note is being emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + credit_note_id: Annotated[ + str | None, + "Unique identifier of the credit note to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + customer_id_for_credit_note: Annotated[ + str | None, + "Customer ID for whom the credit note is raised. Used to identify the recipient of the email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + email_attachments: Annotated[ + str | None, + "The file paths or URLs of files to attach to the email. 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 'email_credit_note'."]: + """Send a credit note via email. + + Use this tool to email a credit note to the intended recipient. It's useful for sending invoice adjustments to clients. + + 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["EMAILCREDITNOTE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not credit_note_id: + missing_params.append(("credit_note_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["EMAILCREDITNOTE_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["EMAILCREDITNOTE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EMAILCREDITNOTE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_identifier, + "customer_id": customer_id_for_credit_note, + "attachments": email_attachments, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_credit_note_email_content( + context: ToolContext, + organization_identifier: Annotated[ + str, + "ID of the organization to retrieve the credit note email content for. This is a required field.", # noqa: E501 + ], + credit_note_id: Annotated[ + str, "Unique identifier of the credit note to retrieve its email content." + ], + specified_email_template_id: Annotated[ + str | None, + "ID of a specific email template. If not provided, defaults to customer's or the default template.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_credit_note_email'."]: + """Retrieve email content for a given credit note. + + Use this tool to get the email content associated with a specified credit note by its ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "email_template_id": specified_email_template_id, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_credit_note_void( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization in Zoho Books to mark the credit note as void." + ], + credit_note_identifier: Annotated[ + str, "Unique identifier of the credit note to mark as void in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_credit_note_void'."]: + """Marks a credit note as void in Zoho Books. + + Use this tool to mark a specific credit note as void, altering its status in the Zoho Books system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/status/void".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def convert_credit_note_to_draft( + context: ToolContext, + organization_id: Annotated[str, "The unique ID of the organization in Zoho Books."], + credit_note_id: Annotated[ + str, "Unique identifier of the credit note to be converted to draft." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_credit_note_draft'."]: + """Convert a voided credit note to a draft status. + + Use this tool to change the status of a voided credit note back to draft in Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/status/draft".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_credit_note_open( + context: ToolContext, + organization_id: Annotated[str, "The unique ID of the organization in Zoho Books."], + credit_note_id: Annotated[ + str, "Unique identifier of the credit note to be converted to Open status." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_credit_note_open'."]: + """Convert a draft credit note to open status in Zoho Books. + + Use this tool to change the status of a credit note from Draft to Open in Zoho Books. This is helpful when you need to activate a credit note that has been prepared and saved as a draft.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/status/open".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def submit_credit_note_for_approval( + context: ToolContext, + organization_id: Annotated[ + str, + "Provide the ID of the organization for which the credit note is being submitted for approval.", # noqa: E501 + ], + credit_note_id: Annotated[ + str, "Unique identifier of the credit note to submit for approval in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit_credit_note'."]: + """Submit a credit note for approval in Zoho Books. + + Call this tool to submit a credit note for approval in Zoho Books using the credit note ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/submit".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def approve_credit_note( + context: ToolContext, + organization_id: Annotated[ + str, "Provide the ID of the organization for which the credit note is being approved." + ], + credit_note_identifier: Annotated[ + str, "A unique string identifier for the specific credit note to approve." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'approve_credit_note'."]: + """Approve a credit note for a specified ID. + + Use this tool to approve a credit note by providing the specific credit note ID. This action confirms the validity and acceptance of the credit note within the system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/approve".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_credit_note_email_history( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization for which you want to retrieve the credit note email history.", # noqa: E501 + ], + credit_note_id: Annotated[ + str, "Unique identifier of the credit note to retrieve its email history." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_credit_note_email_history'."]: + """Retrieve the email history of a specific credit note. + + Use this tool to get detailed information about the email interactions associated with a specific credit note. Useful for tracking communication history.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/emailhistory".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_credit_note_billing_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books. Required to specify which organization's data is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + credit_note_identifier: Annotated[ + str | None, + "A unique identifier for the credit note to update its billing address. 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_credit_note_billing_address'." +]: + """Update the billing address for a specific credit note. + + This tool updates the billing address associated with an existing credit note in Zoho Books. It should be called when a change in billing information for a specific credit note is required. + + 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[ + "UPDATECREDITNOTEBILLINGADDRESS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not credit_note_identifier: + missing_params.append(("credit_note_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECREDITNOTEBILLINGADDRESS_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["UPDATECREDITNOTEBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/address/billing".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECREDITNOTEBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_credit_note_shipping_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "ID of the organization to which the credit note belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + credit_note_id: Annotated[ + str | None, + "Unique identifier of the credit note to update the shipping address for. 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_credit_note_shipping_address'." +]: + """Updates the shipping address of an existing credit note. + + Use this tool to update the shipping address for a specific credit note. Call this when you need to change the recipient's address on a credit note document. + + 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[ + "UPDATECREDITNOTESHIPPINGADDRESS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not credit_note_id: + missing_params.append(("credit_note_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECREDITNOTESHIPPINGADDRESS_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["UPDATECREDITNOTESHIPPINGADDRESS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/address/shipping".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECREDITNOTESHIPPINGADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_credit_note_pdf_templates( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books. Required to fetch credit note templates.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_credit_note_templates'."]: + """Retrieve all credit note PDF templates from Zoho Books. + + Use this tool to obtain a list of all available credit note PDF templates from Zoho Books. It's useful when you need to browse or select a specific credit note template for use.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/templates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_credit_note_template( + context: ToolContext, + organization_identifier: Annotated[ + str, + "Unique identifier for the organization. Required to specify which organization's credit note template will be updated.", # noqa: E501 + ], + credit_note_id: Annotated[str, "Unique identifier of the credit note to be updated."], + credit_note_template_id: Annotated[ + str, "Unique identifier of the credit note template to be updated." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update_credit_note_template'."]: + """Updates the PDF template for a specified credit note. + + Use this tool to change the PDF template associated with a specific credit note by providing the credit note ID and the template ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/templates/{template_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_id, + template_id=credit_note_template_id, + ), + method="PUT", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_credit_note_invoices( + context: ToolContext, + organization_id: Annotated[ + str, + "ID of the organization for which you want to list the invoices associated with the credit note.", # noqa: E501 + ], + credit_note_id: Annotated[ + str, "Unique identifier of the credit note to retrieve associated invoices." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_invoices_of_credit_note'."]: + """List invoices to which the credit note is applied. + + Use this tool to retrieve a list of invoices that are associated with a specific credit note.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/invoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def apply_credit_note_to_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization within Zoho Books to which the credit note is being applied. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + credit_note_id: Annotated[ + str | None, + "Unique identifier of the credit note to apply to invoices. 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 'apply_credit_note_to_invoice'."]: + """Apply credit note to existing invoices in Zoho Books. + + This tool applies a credit note to specific existing invoices within the Zoho Books platform. It should be called when you want to manage or adjust invoice balances by using available credit notes. + + 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[ + "APPLYCREDITNOTETOINVOICE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not credit_note_id: + missing_params.append(("credit_note_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["APPLYCREDITNOTETOINVOICE_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["APPLYCREDITNOTETOINVOICE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/invoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["APPLYCREDITNOTETOINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_credit_note_invoice( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization to identify which organization's data is being manipulated." + ], + credit_note_unique_id: Annotated[ + str, "Unique identifier for the credit note to delete its associated invoice credits." + ], + credit_note_invoice_id: Annotated[ + str, "Unique identifier of the credit note invoice to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_invoice_of_credit_note'."]: + """Delete the credits applied to an invoice of a credit note. + + Use this tool to remove credits applied to an invoice associated with a credit note, ensuring the invoice record reflects modified credits.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/invoices/{creditnote_invoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_unique_id, + creditnote_invoice_id=credit_note_invoice_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_credit_note_comments( + context: ToolContext, + organization_identifier: Annotated[ + str, "Provide the organization's unique ID to retrieve credit note comments." + ], + credit_note_id: Annotated[ + str, + "Provide the unique identifier of the credit note to retrieve its comments and history.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_credit_note_comments'."]: + """Retrieve comments and history of a credit note. + + Use this tool to obtain the history and comments associated with a specific credit note by providing the credit note's ID. This can be useful for tracking changes or feedback related to the credit transaction.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_credit_note_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The string ID of the organization to which the credit note belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + credit_note_id: Annotated[ + str | None, + "Unique identifier of the credit note to which the comment will be added. This is required to specify the exact credit note targeted for the comment. 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_credit_note_comment'."]: + """Add a comment to an existing credit note. + + Use this tool to append a comment to a specific credit note by providing the credit note's ID and the comment text. Ideal for documenting additional information or context on credit notes. + + 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["ADDCREDITNOTECOMMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not credit_note_id: + missing_params.append(("credit_note_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDCREDITNOTECOMMENT_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["ADDCREDITNOTECOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDCREDITNOTECOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_credit_note_comment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. Required for deleting a credit note comment.", # noqa: E501 + ], + credit_note_id: Annotated[ + str, "Unique identifier of the credit note to which the comment belongs." + ], + comment_unique_identifier: Annotated[ + str, "The unique ID of the comment to be deleted from a credit note." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_credit_note_comment'."]: + """Delete a specific comment from a credit note. + + Use this tool to delete a comment from a credit note in Zoho Books. It requires the credit note ID and the comment ID to specify which comment to remove.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_id, + comment_id=comment_unique_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def credit_note_refund_listing( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Use this to specify which organization's credit note refunds to list.", # noqa: E501 + ], + customer_identifier: Annotated[ + str | None, + "ID of the customer for whom the credit note is raised. Provide to filter refunds by customer.", # noqa: E501 + ] = None, + refunds_sort_column: Annotated[ + str | None, + "Specifies the attribute to sort the credit note refunds. Use values like 'refund_mode', 'reference_number', 'date', 'creditnote_number', 'customer_name', 'amount_bcy', or 'amount_fcy'.", # noqa: E501 + ] = None, + pagination_page_number: Annotated[ + int | None, + "Page number for pagination to specify which page of results to retrieve. Default is 1.", + ] = 1, + records_per_page: Annotated[ + int | None, + "Number of records to display per page in the paginated results. Default is 200.", + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_credit_note_refunds'."]: + """Retrieve a paginated list of credit note refunds. + + Use this tool to get a list of all credit note refunds, including pagination information for navigating through large sets of data.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "customer_id": customer_identifier, + "sort_column": refunds_sort_column, + "page": pagination_page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_credit_note_refunds( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization to retrieve credit note refunds for." + ], + credit_note_id: Annotated[str, "Unique identifier of the credit note to retrieve refunds for."], + page_number: Annotated[ + int | None, "Specify the page number to retrieve in paginated results. Default is 1." + ] = 1, + results_per_page: Annotated[ + int | None, "Number of records to return per page, controlling pagination. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_credit_note_refunds1'."]: + """Retrieve refunds for a specific credit note. + + Use this tool to list all refunds associated with a particular credit note by specifying its ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number, + "per_page": results_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def refund_credit_note( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization in Zoho Books for which the credit note refund is being processed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + credit_note_id: Annotated[ + str | None, + "Unique identifier of the credit note to refund. This is required to specify which credit note the refund applies to. 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 'create_credit_note_refund'."]: + """Process a credit note refund in Zoho Books. + + Use this tool to issue a refund for a specified credit note in Zoho Books. It is triggered when there's a need to reimburse the amount associated with a credit note. + + 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["REFUNDCREDITNOTE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not credit_note_id: + missing_params.append(("credit_note_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["REFUNDCREDITNOTE_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["REFUNDCREDITNOTE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), creditnote_id=credit_note_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REFUNDCREDITNOTE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_credit_note_refund( + context: ToolContext, + organization_id: Annotated[ + str, + "The ID of the organization for which the credit note refund is being retrieved. Use a valid organization identifier.", # noqa: E501 + ], + credit_note_id: Annotated[ + str, "Unique identifier of the credit note to retrieve refund details for." + ], + credit_note_refund_id: Annotated[ + str, "Unique identifier of the credit note refund to retrieve specific refund details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_credit_note_refund'."]: + """Retrieve refund details for a specific credit note. + + Use this tool to obtain information about the refund of a specific credit note by providing the credit note ID and refund ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds/{creditnote_refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_id, + creditnote_refund_id=credit_note_refund_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_refund_transaction( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization. Required to identify which organization's records are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + credit_note_identifier: Annotated[ + str | None, + "Unique identifier of the credit note to update the refund transaction. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + credit_note_refund_id: Annotated[ + str | None, + "Provide the unique identifier of the credit note refund to update its transaction details. 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_credit_note_refund'."]: + """Update the refunded transaction details. + + Use this tool to update the details of a refunded transaction associated with a specific credit note. This is helpful when corrections or updates are needed for bookkeeping or record maintenance. + + 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[ + "UPDATEREFUNDTRANSACTION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not credit_note_identifier: + missing_params.append(("credit_note_identifier", "path")) + if not credit_note_refund_id: + missing_params.append(("credit_note_refund_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEREFUNDTRANSACTION_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["UPDATEREFUNDTRANSACTION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds/{creditnote_refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_identifier, + creditnote_refund_id=credit_note_refund_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEREFUNDTRANSACTION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.creditnotes.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_credit_note_refund( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization. Required to delete a credit note refund." + ], + credit_note_id: Annotated[str, "Unique identifier of the credit note to be refunded."], + credit_note_refund_id: Annotated[str, "Unique identifier of the credit note refund to delete."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_credit_note_refund'."]: + """Delete a specific credit note refund by ID. + + Use this tool to remove a credit note refund for a given credit note and refund ID when it's no longer needed or was made in error.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds/{creditnote_refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + creditnote_id=credit_note_id, + creditnote_refund_id=credit_note_refund_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_currency( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the currency is being created. 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 'create_currency'."]: + """Create a currency for transactions in Zoho Books. + + Use this tool to add a new currency for use in transactions within Zoho Books. This is useful when expanding the supported currencies for financial activities. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATECURRENCY_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATECURRENCY_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["CREATECURRENCY_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/currencies".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECURRENCY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_configured_currencies( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. Required to retrieve currency data for a specific organization.", # noqa: E501 + ], + exclude_base_currency_filter: Annotated[ + str | None, + "Set to exclude the base currency from the result. Use 'Currencies.ExcludeBaseCurrency'.", + ] = None, + page_number: Annotated[ + int | None, "The page number of currency records to fetch. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, + "Number of currency records to fetch per page. Defaults to 200 if not specified.", + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_currencies'."]: + """Retrieve the list of configured currencies in Zoho Books. + + This tool retrieves the list of all currencies configured within Zoho Books. Use it when you need to know which currencies are set up in the system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/currencies".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "filter_by": exclude_base_currency_filter, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_currency_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization for which the currency details are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + currency_unique_identifier: Annotated[ + str | None, + "Unique identifier of the currency to be updated in Zoho Books. 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_currency'."]: + """Update the details of a currency in Zoho Books. + + Use this tool to update information for a specific currency in Zoho Books by providing the currency ID. + + 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[ + "UPDATECURRENCYDETAILS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not currency_unique_identifier: + missing_params.append(("currency_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECURRENCYDETAILS_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["UPDATECURRENCYDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/currencies/{currency_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + currency_id=currency_unique_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECURRENCYDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_currency_details( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the currency details are requested." + ], + currency_identifier: Annotated[str, "Unique identifier for the currency to fetch details for."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_currency'."]: + """Get the details of a specific currency. + + Use this tool to obtain detailed information about a particular currency by its ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/currencies/{currency_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), currency_id=currency_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def remove_currency( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID representing the organization for which the currency deletion is requested.", + ], + currency_identifier: Annotated[str, "Unique identifier of the currency to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_currency'."]: + """Remove a specific currency from the system. + + This tool deletes a currency. It should be used when a currency that is no longer needed should be removed, as long as it is not associated with any transactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/currencies/{currency_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), currency_id=currency_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_currency_exchange_rates( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization to retrieve exchange rates." + ], + currency_identifier: Annotated[ + str, "Unique identifier for the currency to retrieve exchange rates." + ], + exchange_rate_from_date: Annotated[ + str | None, + "Date to start retrieving exchange rates. Returns rates from this date or nearest previous match.", # noqa: E501 + ] = None, + sort_by_column: Annotated[ + str | None, + "Sorts the exchange rates by the specified column. Only 'effective_date' is allowed.", + ] = None, + return_current_date_exchange_rate_only: Annotated[ + bool | None, + "Set to true to return the exchange rate only if it's available for the current date.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_exchange_rates'."]: + """Retrieve exchange rates for a specific currency. + + This tool fetches a list of configured exchange rates for a given currency using its ID. Call this tool to obtain exchange rate information associated with a particular currency.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), currency_id=currency_identifier + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "from_date": exchange_rate_from_date, + "is_current_date": return_current_date_exchange_rate_only, + "sort_column": sort_by_column, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_exchange_rate( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the exchange rate is being created. This must be a unique identifier within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + currency_identifier: Annotated[ + str | None, + "Unique identifier for the currency used to create the exchange rate in Zoho Books. 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 'create_exchange_rate'."]: + """Create an exchange rate for a specified currency. + + This tool should be called when you need to create a new exchange rate for a specific currency in Zoho Books. It allows you to define exchange rates between specified currencies. + + 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["CREATEEXCHANGERATE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not currency_identifier: + missing_params.append(("currency_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEEXCHANGERATE_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["CREATEEXCHANGERATE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), currency_id=currency_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEEXCHANGERATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_currency_exchange_rate( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization for which you want to retrieve exchange rate details.", + ], + currency_unique_identifier: Annotated[ + str, + "Unique identifier for the currency. Use to specify the currency for the exchange rate details.", # noqa: E501 + ], + exchange_rate_unique_id: Annotated[ + str, "Unique identifier of the exchange rate to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_exchange_rate'."]: + """Retrieve details of a specific currency exchange rate. + + This tool is used to get details of an exchange rate associated with a specified currency. It should be called when you need information about a specific exchange rate for financial or currency conversion purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates/{exchange_rate_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + currency_id=currency_unique_identifier, + exchange_rate_id=exchange_rate_unique_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_exchange_rate( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization for which the exchange rate is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + currency_unique_identifier: Annotated[ + str | None, + "Unique identifier for the currency you want to update the exchange rate for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + exchange_rate_identifier: Annotated[ + str | None, + "Unique identifier for the exchange rate to be updated. 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_exchange_rate'."]: + """Update exchange rate details for a currency in Zoho Books. + + This tool updates the exchange rate for a specified currency in Zoho Books. It should be called when you need to modify the exchange rate details, usually for financial reports, accounting adjustments, or compliance with real-time rates. + + 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["UPDATEEXCHANGERATE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not currency_unique_identifier: + missing_params.append(("currency_unique_identifier", "path")) + if not exchange_rate_identifier: + missing_params.append(("exchange_rate_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEEXCHANGERATE_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["UPDATEEXCHANGERATE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates/{exchange_rate_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + currency_id=currency_unique_identifier, + exchange_rate_id=exchange_rate_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEEXCHANGERATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_exchange_rate( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the exchange rate is being deleted." + ], + currency_identifier: Annotated[ + str, "Unique identifier for the currency whose exchange rate is to be deleted." + ], + exchange_rate_identifier: Annotated[ + str, "Unique identifier for the exchange rate to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_exchange_rate'."]: + """Delete an exchange rate for a specific currency. + + Use this tool to delete an exchange rate using the specified currency and exchange rate IDs.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates/{exchange_rate_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + currency_id=currency_identifier, + exchange_rate_id=exchange_rate_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.custommodules.ALL"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_custom_module_records( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the Zoho organization to fetch records from." + ], + custom_module_name: Annotated[ + str, "Name of the custom module from which to retrieve records in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_records_of_custom_module'."]: + """Fetches records from a specified custom module. + + Use this tool to retrieve the list of records from a specific custom module in Zoho Books. Provide the module name to get the corresponding records.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/{module_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), module_name=custom_module_name + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.custommodules.ALL"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_custom_module_records( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization that owns the module records to be updated. This ID is required to specify which organization's records are being modified. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + module_name: Annotated[ + str | None, + "Specify the name of the custom module to update records in bulk. 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 'bulk_update_custom_module_records'." +]: + """Updates existing custom module records in bulk. + + Use this tool to update multiple records in a custom module efficiently. This is useful for making uniform changes across a set of records within a specified module. + + 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[ + "UPDATECUSTOMMODULERECORDS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not module_name: + missing_params.append(("module_name", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECUSTOMMODULERECORDS_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["UPDATECUSTOMMODULERECORDS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/{module_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), module_name=module_name + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECUSTOMMODULERECORDS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.custommodules.ALL"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_custom_module( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the custom module is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_module_name: Annotated[ + str | None, + "Specify the name for the custom module to be created in Zoho Books. 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 'create_custom_module'."]: + """Creates a custom module in Zoho Books. + + Use this tool to create a custom module in Zoho Books. Specify the module name as needed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATECUSTOMMODULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not custom_module_name: + missing_params.append(("custom_module_name", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECUSTOMMODULE_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["CREATECUSTOMMODULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/{module_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), module_name=custom_module_name + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECUSTOMMODULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.custommodules.ALL"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_custom_module( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + module_name: Annotated[str, "The name of the custom module to be deleted in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_custom_module'."]: + """Deletes a specified custom module in Zoho Books. + + This tool is used to delete a custom module within Zoho Books. It should be called when you need to remove a specific custom module by its name.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/{module_name}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), module_name=module_name + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.custommodules.ALL"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_custom_module_record_details( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + module_name: Annotated[ + str, "The name of the module associated with the organization in Zoho Books." + ], + custom_module_id: Annotated[ + int, + "The ID for the specific custom module in Zoho Books that you want to retrieve details for. This value should be an integer.", # noqa: E501 + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'get_custom_module_record_details'." +]: + """Fetch details of an organization in Zoho Books. + + Use this tool to retrieve details of a specific organization by providing the module name and module ID in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/{module_name}/{module_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + module_name=module_name, + module_id=custom_module_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.custommodules.ALL"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_custom_module_record( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + module_name: Annotated[ + str | None, + "The name of the custom module to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_module_id: Annotated[ + int | None, + "The ID of the custom module to be updated in Zoho Books. 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_custom_module_record'."]: + """Update an existing custom module in Zoho Books. + + Use this tool to update an existing custom module record in Zoho Books by specifying the module name and module ID. + + 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[ + "UPDATECUSTOMMODULERECORD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not module_name: + missing_params.append(("module_name", "path")) + if not custom_module_id: + missing_params.append(("custom_module_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECUSTOMMODULERECORD_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["UPDATECUSTOMMODULERECORD_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/{module_name}/{module_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + module_name=module_name, + module_id=custom_module_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECUSTOMMODULERECORD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.custommodules.ALL"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_custom_module_record( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to specify which organization's module record to delete.", # noqa: E501 + ], + module_name: Annotated[str, "Name of the custom module containing the record to delete."], + custom_module_id: Annotated[int, "The unique integer ID of the custom module to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_custom_module_record'."]: + """Delete an individual record from a custom module. + + Use this tool to delete specific records from a custom module in Zoho Books. Provide the module name and module ID to identify and remove the desired record.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/{module_name}/{module_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + module_name=module_name, + module_id=custom_module_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_customer_debit_note( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "A unique identifier for the organization to which the debit note will be associated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + send_debit_note: Annotated[ + bool | None, + "Set to true to send the debit note to the associated contacts. Accepts true or false. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to ignore automatic debit note number generation, requiring manual entry. 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 'create_customer_debit_note'."]: + """Create a customer debit note for invoice adjustments. + + This tool is used to create a customer debit note when there are additional charges or adjustments needed for an existing invoice in Zoho Books. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECUSTOMERDEBITNOTE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECUSTOMERDEBITNOTE_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["CREATECUSTOMERDEBITNOTE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/customerdebitnotes".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECUSTOMERDEBITNOTE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "send": send_debit_note, + "ignore_auto_number_generation": ignore_auto_number_generation, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_customer_debit_notes( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID of the organization for this request. Required for identifying the organization whose debit notes are being queried.", # noqa: E501 + ], + search_item_name: Annotated[ + str | None, + "Search debit notes based on product or service names. Supports 'item_name_startswith' and 'item_name_contains'. Max length is 100 characters.", # noqa: E501 + ] = None, + search_by_item_id: Annotated[ + str | None, + "Search for customer debit notes using a specific item ID to filter based on product or service identifiers.", # noqa: E501 + ] = None, + item_description_filter: Annotated[ + str | None, + "Filter debit notes by item description using detailed descriptions of products or services. Supports 'startswith' and 'contains' variants. Max length: 100 characters.", # noqa: E501 + ] = None, + search_by_customer_name: Annotated[ + str | None, + "Search debit notes by customer name. Filters based on the business or individual name. Maximum 100 characters.", # noqa: E501 + ] = None, + customer_email_filter: Annotated[ + str | None, + "Filter debit notes by customer email address, with a maximum length of 100 characters, to find specific customers or generate segment reports.", # noqa: E501 + ] = None, + search_by_total_amount: Annotated[ + str | None, + "Filter debit notes by the total amount, including taxes, discounts, and adjustments. Useful for finding specific price ranges or high-value transactions.", # noqa: E501 + ] = None, + search_by_outstanding_balance: Annotated[ + str | None, + "Filter debit notes by the remaining unpaid amount owed by the customer. Useful for finding overdue debit notes, tracking receivables, or generating aging reports.", # noqa: E501 + ] = None, + search_by_custom_field: Annotated[ + str | None, + "Filter debit notes using custom fields. Supports 'custom_field_startswith' and 'custom_field_contains' for searching specific text patterns.", # noqa: E501 + ] = None, + search_date_range: Annotated[ + str | None, + "Filter debit notes by creation date using yyyy-mm-dd format. Supports variants: date_start, date_end, date_before, date_after.", # noqa: E501 + ] = None, + filter_due_date: Annotated[ + str | None, + "Search debit notes by due date using yyyy-mm-dd format. Supports 'due_date_start', 'due_date_end', 'due_date_before', and 'due_date_after' variants.", # noqa: E501 + ] = None, + creation_date_filter: Annotated[ + str | None, + "Filter debit notes by creation date. Use formats: 'yyyy-mm-dd', 'created_date_start', 'created_date_end', 'created_date_before', or 'created_date_after'.", # noqa: E501 + ] = None, + last_modified_timestamp: Annotated[ + str | None, + "Filter debit notes modified after this timestamp in YYYY-MM-DDTHH:MM:SS-UTC format.", + ] = None, + status_filter: Annotated[ + str | None, + "Filter debit notes by their status. Allowed values: sent, draft, overdue, paid, void, unpaid, partially_paid, viewed.", # noqa: E501 + ] = None, + search_by_customer_id: Annotated[ + str | None, + "Search debit notes by the customer's unique identifier. Use the customer ID from the Contacts API to find all corresponding debit notes.", # noqa: E501 + ] = None, + filter_by_debit_note_type: Annotated[ + str | None, + "Set to 'Type.DebitNote' to filter debit notes specifically. Required for this search.", + ] = None, + general_search_text: Annotated[ + str | None, + "Search debit notes by number, purchase order, or customer name. Max 100 characters. Useful for quick searches across multiple fields.", # noqa: E501 + ] = None, + sort_debit_notes_by_column: Annotated[ + str | None, + "Sort debit notes by a specific column. Allowed values: customer_name, debit_note_number, date, due_date, total, balance, created_time.", # noqa: E501 + ] = None, + page_number_to_fetch: Annotated[ + int | None, + "Page number to retrieve from paginated results. Default is 1. Use with `per_page` to navigate extensive debit note data efficiently.", # noqa: E501 + ] = 1, + records_per_page: Annotated[ + int | None, + "Specify the number of records to retrieve per page, up to a maximum of 200. The default value is 200. This helps manage data transfer efficiency.", # noqa: E501 + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_customer_debit_notes'."]: + """Retrieve and organize customer debit notes easily. + + Use this tool to access customer debit notes with options for pagination, filtering, searching, and sorting, allowing you to view and organize debit note data efficiently.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/customerdebitnotes".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "item_name": search_item_name, + "item_id": search_by_item_id, + "item_description": item_description_filter, + "customer_name": search_by_customer_name, + "email": customer_email_filter, + "total": search_by_total_amount, + "balance": search_by_outstanding_balance, + "custom_field": search_by_custom_field, + "date": search_date_range, + "due_date": filter_due_date, + "created_date": creation_date_filter, + "last_modified_time": last_modified_timestamp, + "status": status_filter, + "customer_id": search_by_customer_id, + "filter_by": filter_by_debit_note_type, + "search_text": general_search_text, + "sort_column": sort_debit_notes_by_column, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_customer_debit_note( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Organization ID for the request within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + debit_note_unique_identifier: Annotated[ + str | None, + "Unique identifier for the debit note to be updated in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to ignore automatic debit note number generation, requiring manual input of the debit note number. 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_customer_debit_note'."]: + """Update an existing customer debit note. + + Use this tool to update details of an existing customer debit note in Zoho Books. Remove a line item by omitting it from the line_items list. + + 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[ + "UPDATECUSTOMERDEBITNOTE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not debit_note_unique_identifier: + missing_params.append(("debit_note_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECUSTOMERDEBITNOTE_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["UPDATECUSTOMERDEBITNOTE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/{debit_note_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + debit_note_id=debit_note_unique_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECUSTOMERDEBITNOTE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "ignore_auto_number_generation": ignore_auto_number_generation, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_customer_debit_note( + context: ToolContext, + organization_id: Annotated[ + str, + "Organization ID for the request. This ID is required to specify the organization from which to retrieve the debit note.", # noqa: E501 + ], + debit_note_unique_id: Annotated[ + str, "Unique identifier for the specific debit note to retrieve details." + ], + response_format: Annotated[ + str | None, + "Format of the debit note details. Options are json, pdf, or html. Default is json.", + ] = None, + print_pdf: Annotated[ + bool | None, + "If true, print the exported PDF version of the debit note; otherwise, do not print.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_customer_debit_note'."]: + """Retrieve the details of a customer debit note from Zoho Books. + + This tool is used to get detailed information about a specific customer debit note by its ID from Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{debit_note_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + debit_note_id=debit_note_unique_id, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "print": print_pdf, + "accept": response_format, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_customer_debit_note( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization within Zoho Books. Required to specify which organization's data to access or modify.", # noqa: E501 + ], + debit_note_unique_id: Annotated[str, "Unique identifier for the debit note to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_customer_debit_note'."]: + """Delete an existing customer debit note in Zoho Books. + + Use this tool to delete a customer debit note in Zoho Books. Note that debit notes with payments or credit notes applied cannot be deleted.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{debit_note_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + debit_note_id=debit_note_unique_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_customer_payment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. This is necessary to associate the payment with the correct organization. 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 'create_customer_payment'."]: + """Create a new customer payment in Zoho Books. + + Use this tool to record a new payment for a customer in Zoho Books. It should be called when you need to add a payment entry for accounting purposes or to update a customer's payment status. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECUSTOMERPAYMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECUSTOMERPAYMENT_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["CREATECUSTOMERPAYMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/customerpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECUSTOMERPAYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_customer_payments( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization. Required to specify which organization's payments to list.", # noqa: E501 + ], + search_customer_name: Annotated[ + str | None, + "Filter payments by customer name using 'startswith' or 'contains' variants. Max length: 100 characters.", # noqa: E501 + ] = None, + search_by_reference_number: Annotated[ + str | None, + "Search payments by reference number. Supports 'startswith' and 'contains' variants. Max-length 100.", # noqa: E501 + ] = None, + payment_date: Annotated[ + str | None, + "Specify the date of the customer payment in YYYY-MM-DD format to filter results.", + ] = None, + payment_amount_filter: Annotated[ + float | None, + "Filter payments by amount using variants: less_than, less_equals, greater_than, or greater_equals.", # noqa: E501 + ] = None, + search_by_customer_notes: Annotated[ + str | None, + "Search payments using customer notes, supporting 'startswith' and 'contains' variants.", + ] = None, + payment_mode_filter: Annotated[ + str | None, + "Filter payments by specifying the payment mode. Use 'startswith' or 'contains' for partial matching.", # noqa: E501 + ] = None, + filter_payments_by_mode: Annotated[ + str | None, + "Filter payments by the payment mode. Accepted values include: All, Check, Cash, BankTransfer, Paypal, CreditCard, GoogleCheckout, Credit, Authorizenet, BankRemittance, Payflowpro, Stripe, TwoCheckout, Braintree, Others.", # noqa: E501 + ] = None, + sort_column: Annotated[ + str | None, + "Specify the column to sort the payments by. Common options include date, amount, or customer name.", # noqa: E501 + ] = None, + search_term_for_payments: Annotated[ + str | None, + "Search payments by reference number, customer name, or payment description. Maximum length is 100 characters.", # noqa: E501 + ] = None, + customer_id: Annotated[ + str | None, + "The unique identifier for the customer involved in the payment. Use this to target specific customer transactions.", # noqa: E501 + ] = None, + page_number_to_fetch: Annotated[ + int | None, "The page number of payment records to be retrieved. Defaults to 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to be fetched per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_customer_payments'."]: + """List all payments made by your customers. + + Use this tool to retrieve a list of all the payments made by your customers. It is useful for financial analysis, reconciliation, or customer support purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/customerpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "customer_name": search_customer_name, + "reference_number": search_by_reference_number, + "date": payment_date, + "amount": payment_amount_filter, + "notes": search_by_customer_notes, + "payment_mode": payment_mode_filter, + "filter_by": filter_payments_by_mode, + "sort_column": sort_column, + "search_text": search_term_for_payments, + "customer_id": customer_id, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def bulk_delete_customer_payments( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier string for the organization in Zoho Books." + ], + payment_ids_to_delete: Annotated[ + str, "Comma-separated list of payment IDs to be deleted in the bulk operation." + ], + perform_bulk_delete: Annotated[ + bool, "Set to true to perform the bulk delete operation for customer payments." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'bulk_delete_customer_payments'."]: + """Delete multiple customer payments efficiently. + + Use this tool to remove several customer payments at once in Zoho Books. It's ideal for managing large-scale payment data cleanup.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/customerpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="DELETE", + params=remove_none_values({ + "organization_id": organization_id, + "payment_id": payment_ids_to_delete, + "bulk_delete": perform_bulk_delete, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_payment_by_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization whose payment is being updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_api_name: Annotated[ + str | None, + "API name of the unique custom field used to identify the payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "The unique value of the custom field used to identify or create a payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_new_payment_if_not_found: Annotated[ + bool | None, + "Set to true to create a new payment when no matching unique custom field value is found. 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_customer_payment_using_custom_field'." +]: + """Update or upsert a customer payment using a unique custom field. + + Use this tool to update an existing customer payment or create a new one if it doesn't exist, by specifying a unique value from a custom field. The unique custom field value helps identify the payment to update. If upsert is enabled, a new payment will be created when the unique value is not found. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEPAYMENTBYCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPAYMENTBYCUSTOMFIELD_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["UPDATEPAYMENTBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/customerpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPAYMENTBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": create_new_payment_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_customer_payment_info( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the payment update is requested. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + payment_unique_identifier: Annotated[ + str | None, + "The unique identifier for the payment to be updated. Use this to specify which payment you want to modify. 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_customer_payment'."]: + """Update an existing payment information. + + Use this tool to update payment information for a customer when any corrections or modifications are needed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATECUSTOMERPAYMENTINFO_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not payment_unique_identifier: + missing_params.append(("payment_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECUSTOMERPAYMENTINFO_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["UPDATECUSTOMERPAYMENTINFO_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/customerpayments/{payment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + payment_id=payment_unique_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECUSTOMERPAYMENTINFO_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_customer_payment_details( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the payment details are requested." + ], + payment_identifier: Annotated[ + str, "The unique identifier of the payment to retrieve details for." + ], + response_format: Annotated[ + str | None, "Format of the response. Allowed values: 'json' or 'pdf'. Default is 'json'." + ] = "json", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_customer_payment'."]: + """Retrieve details of a specific customer payment. + + Use this tool to obtain information about a specific customer payment by providing the payment ID. Ideal for retrieving payment history or verifying payment details.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/customerpayments/{payment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), payment_id=payment_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id, "accept": response_format}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_customer_payment( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization whose payment is being deleted." + ], + payment_identifier: Annotated[ + str, + "Unique identifier for the payment to be deleted. Required to specify which payment record should be removed.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_customer_payment'."]: + """Delete an existing payment for a customer. + + Use this tool when you need to delete a specific customer payment by its payment ID. It confirms the removal of the payment record.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/customerpayments/{payment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), payment_id=payment_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_customer_payment_refunds( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization. Required to specify which organization's data to access.", # noqa: E501 + ], + customer_payment_identifier: Annotated[ + str, "Unique identifier of the customer payment to retrieve associated refunds." + ], + page_number: Annotated[ + int | None, "Specify the page number to fetch. Defaults to 1 if not provided." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to fetch per page. Defaults to 200 if not specified." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_customer_payment_refunds'."]: + """Retrieve refunds for a specified customer payment. + + Use this tool to list all refunds related to a particular customer payment by providing the customer payment ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + customer_payment_id=customer_payment_identifier, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def refund_excess_payment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization to process the refund under. Ensure this matches the ID in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + customer_payment_identifier: Annotated[ + str | None, + "Unique identifier for the customer's payment to be refunded. 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 'create_customer_payment_refund'."]: + """Refund the excess amount paid by a customer. + + Use this tool to refund any excess amount received from a customer payment. It is called when there is a need to process a refund for overpaid amounts in customer transactions. + + 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["REFUNDEXCESSPAYMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not customer_payment_identifier: + missing_params.append(("customer_payment_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REFUNDEXCESSPAYMENT_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["REFUNDEXCESSPAYMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + customer_payment_id=customer_payment_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REFUNDEXCESSPAYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_customer_payment_custom_fields( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization to which the customer payment belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + customer_payment_identifier: Annotated[ + str | None, + "The unique identifier for the customer payment you wish to update custom fields for. 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_custom_fields_in_customer_payment'." +]: + """Update custom fields in existing customer payments. + + Use this tool to update the values of custom fields in an existing customer payment in Zoho Books. + + 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[ + "UPDATECUSTOMERPAYMENTCUSTOMFIELDS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not customer_payment_identifier: + missing_params.append(("customer_payment_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECUSTOMERPAYMENTCUSTOMFIELDS_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["UPDATECUSTOMERPAYMENTCUSTOMFIELDS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/customerpayment/{customer_payment_id}/customfields".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + customer_payment_id=customer_payment_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECUSTOMERPAYMENTCUSTOMFIELDS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_customer_payment_refund_details( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID of the organization. This is required to specify which organization's data to access.", # noqa: E501 + ], + customer_payment_unique_id: Annotated[ + str, "Unique identifier of the customer payment to retrieve refund details." + ], + refund_identifier: Annotated[ + str, "Unique identifier of the refund for the specified customer payment." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_customer_payment_refund'."]: + """Obtain details of a specific customer payment refund. + + Use this tool to get detailed information about a particular refund related to a customer's payment.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds/{refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + customer_payment_id=customer_payment_unique_id, + refund_id=refund_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_payment_refund( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. Required to access the organization's data. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + customer_payment_identifier: Annotated[ + str | None, + "Unique identifier of the customer payment to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + refund_identifier: Annotated[ + str | None, + "Unique identifier for the refund transaction to be updated. 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_customer_payment_refund'."]: + """Update details of a customer payment refund. + + This tool updates the details of a refunded transaction for a customer payment in Zoho Books. It should be called when you need to modify existing refund details. + + 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["UPDATEPAYMENTREFUND_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not customer_payment_identifier: + missing_params.append(("customer_payment_identifier", "path")) + if not refund_identifier: + missing_params.append(("refund_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPAYMENTREFUND_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["UPDATEPAYMENTREFUND_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds/{refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + customer_payment_id=customer_payment_identifier, + refund_id=refund_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPAYMENTREFUND_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.customerpayments.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_customer_payment_refund( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the refund deletion is requested." + ], + customer_payment_identifier: Annotated[ + str, + "The unique identifier for the customer payment associated with the refund to be deleted.", + ], + refund_identifier: Annotated[str, "Unique identifier of the refund to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_customer_payment_refund'."]: + """Delete a refund for an existing customer payment. + + This tool should be called when you need to delete a refund associated with an existing customer payment in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds/{refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + customer_payment_id=customer_payment_identifier, + refund_id=refund_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_customer_estimate( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the estimate is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + send_estimate_to_contact: Annotated[ + bool | None, + "Set to true to send the estimate to the contact person(s) associated with it, false to skip sending. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + ignore_automatic_estimate_number_generation: Annotated[ + bool | None, + "Set to true to bypass automatic estimate number generation. This requires specifying an estimate number. 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 'create_estimate'."]: + """Create an estimate for a customer using Zoho Books. + + Use this tool to generate a new estimate for a customer within the Zoho Books system. This could be useful when users need to provide potential price quotes or service costs to clients. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECUSTOMERESTIMATE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECUSTOMERESTIMATE_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["CREATECUSTOMERESTIMATE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/estimates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECUSTOMERESTIMATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "send": send_estimate_to_contact, + "ignore_auto_number_generation": ignore_automatic_estimate_number_generation, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_estimates( + context: ToolContext, + organization_id: Annotated[ + str, "Specifies the ID of the organization to filter the estimates." + ], + estimate_number_filter: Annotated[ + str | None, + "Specify an estimate number or use variants like 'startswith' or 'contains' for partial matching to filter estimates.", # noqa: E501 + ] = None, + reference_number_filter: Annotated[ + str | None, + "Filter or search estimates by their reference number. Supports partial matches using 'startswith' and 'contains'.", # noqa: E501 + ] = None, + customer_name: Annotated[ + str | None, + "Search estimates by customer's name with optional variants for partial matches, such as 'startswith' and 'contains'.", # noqa: E501 + ] = None, + total_filter: Annotated[ + float | None, + "Specify a condition to search estimates by their total amount. Use variants like 'less_than', 'less_equals', 'greater_than', and 'greater_equals' for range queries.", # noqa: E501 + ] = None, + filter_by_customer_id: Annotated[ + str | None, + "Filter or search estimates using the unique customer ID. Use the `customer_id` provided by the Contacts API for the same organization to retrieve estimates linked to a specific customer.", # noqa: E501 + ] = None, + filter_by_item_id: Annotated[ + str | None, + "Filter or search estimates by the unique item ID. Use the item_id returned by the Items API for the same organization to find estimates including a specific product or service.", # noqa: E501 + ] = None, + item_name_filter: Annotated[ + str | None, + "Search estimates by item name. Supports variants like 'item_name_startswith' and 'item_name_contains' for partial matches.", # noqa: E501 + ] = None, + search_by_item_description: Annotated[ + str | None, + "Search estimates by item description. Use variants 'item_description_startswith' and 'item_description_contains' for pattern matching.", # noqa: E501 + ] = None, + search_by_custom_field: Annotated[ + str | None, + "Search estimates by a custom field, supporting variants like 'startswith' or 'contains' for partial matches. Useful for identifying estimates linked to specific custom data.", # noqa: E501 + ] = None, + expiry_date: Annotated[ + str | None, + "Specify the expiration date of the estimates to filter the results. Use the format YYYY-MM-DD.", # noqa: E501 + ] = None, + estimate_date_filter: Annotated[ + str | None, + "Search estimates by date using variants like 'date_start', 'date_end', 'date_before', or 'date_after'.", # noqa: E501 + ] = None, + estimate_status_filter: Annotated[ + str | None, + "Filter estimates by status. Allowed values: draft, sent, invoiced, accepted, declined, expired.", # noqa: E501 + ] = None, + filter_estimates_by_status: Annotated[ + str | None, + "Specify the status to filter estimates. Allowed values: Status.All, Status.Sent, Status.Draft, Status.Invoiced, Status.Accepted, Status.Declined, Status.Expired.", # noqa: E501 + ] = None, + keyword_search: Annotated[ + str | None, + "Keyword search across estimate number, reference number, or customer name to quickly find matching estimates.", # noqa: E501 + ] = None, + sort_estimates_by_column: Annotated[ + str | None, + "Specify the column to sort estimates by. Options: customer_name, estimate_number, date, total, created_time.", # noqa: E501 + ] = None, + deal_potential_id: Annotated[ + int | None, + "Potential ID of a Deal in CRM. Use this to filter estimates linked to specific deals.", + ] = None, + page_number: Annotated[int | None, "Specify the page number to fetch. Default is 1."] = 1, + records_per_page: Annotated[ + int | None, "Number of records to fetch per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_estimates'."]: + """Retrieve a list of all estimates with pagination. + + Use this tool to fetch all estimates, including pagination information, from Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "estimate_number": estimate_number_filter, + "reference_number": reference_number_filter, + "customer_name": customer_name, + "total": total_filter, + "customer_id": filter_by_customer_id, + "item_id": filter_by_item_id, + "item_name": item_name_filter, + "item_description": search_by_item_description, + "custom_field": search_by_custom_field, + "expiry_date": expiry_date, + "date": estimate_date_filter, + "status": estimate_status_filter, + "filter_by": filter_estimates_by_status, + "search_text": keyword_search, + "sort_column": sort_estimates_by_column, + "zcrm_potential_id": deal_potential_id, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_estimate_with_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Provide the ID of the organization for which the estimate is being updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_api_name: Annotated[ + str | None, + "The API name of the custom field used to uniquely identify and update an estimate. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "The unique value of the custom field used to identify and update the estimate. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_new_estimate_if_not_found: Annotated[ + bool | None, + "Set to true to create a new estimate if no existing record matches the custom field value. 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_estimate_using_custom_field'." +]: + """Update or create an estimate using a custom field value. + + This tool allows updating an existing estimate by providing a unique custom field value. If the value does not match any existing estimates and the X-Upsert header is true, a new estimate will be created if required details are provided. Use this tool to maintain estimates based on unique identifiers. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEESTIMATEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEESTIMATEWITHCUSTOMFIELD_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["UPDATEESTIMATEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/estimates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEESTIMATEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": create_new_estimate_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_estimate( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization whose estimate needs updating. It should be a unique identifier in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + estimate_unique_id: Annotated[ + str | None, + "Unique identifier for the estimate you want to update in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to ignore auto generation of estimate numbers and manually specify the estimate number. 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_estimate'."]: + """Update an existing estimate in Zoho Books. + + Use this tool to modify an existing estimate in Zoho Books. When updating, you can remove a line item by excluding it from the line_items list. + + 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["UPDATEESTIMATE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not estimate_unique_id: + missing_params.append(("estimate_unique_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEESTIMATE_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["UPDATEESTIMATE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_unique_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEESTIMATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "ignore_auto_number_generation": ignore_auto_number_generation, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_estimate_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization in Zoho Books. Required to retrieve estimate details.", # noqa: E501 + ], + estimate_id: Annotated[ + str, "Unique identifier of the specific estimate to retrieve details for." + ], + response_format: Annotated[ + str | None, + "Specify the format for the estimate details: json, pdf, or html. Default is json.", + ] = None, + print_pdf: Annotated[ + bool | None, "Set to true to print the exported PDF of the estimate." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_estimate'."]: + """Retrieve the details of a specific estimate. + + Use this tool to get information about a particular estimate by providing its ID. It returns the details associated with the specified estimate in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "print": print_pdf, + "accept": response_format, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_estimate( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization where the estimate will be deleted." + ], + estimate_id: Annotated[str, "Unique identifier for the estimate to be deleted in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_estimate'."]: + """Delete an existing estimate in Zoho Books. + + Use this tool to remove an estimate by providing its unique estimate ID in Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_estimate_custom_fields( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization whose estimate custom fields are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + estimate_identifier: Annotated[ + str | None, + "Unique identifier for the estimate to be updated. 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_custom_fields_in_estimate'." +]: + """Update custom fields in a specific estimate. + + This tool updates the values of custom fields in an existing estimate. It should be called when you need to modify or add information to custom fields of a particular estimate. + + 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[ + "UPDATEESTIMATECUSTOMFIELDS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not estimate_identifier: + missing_params.append(("estimate_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEESTIMATECUSTOMFIELDS_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["UPDATEESTIMATECUSTOMFIELDS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/estimate/{estimate_id}/customfields".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEESTIMATECUSTOMFIELDS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_estimate_as_sent( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books. Required to identify which organization's estimate to mark as sent.", # noqa: E501 + ], + estimate_identifier: Annotated[ + str, "The unique identifier for the estimate to be marked as sent." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_estimate_sent'."]: + """Mark a draft estimate as sent. + + Use this tool to mark a draft estimate in Zoho Books as sent. Call this when you need to update the status of an estimate to indicate it has been sent to a client.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/status/sent".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def accept_estimate( + context: ToolContext, + organization_id: Annotated[str, "ID for the organization related to the estimate acceptance."], + estimate_identifier: Annotated[ + str, "Unique identifier of the estimate to be marked as accepted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_estimate_accepted'."]: + """Mark a sent estimate as accepted if the customer has accepted it. + + Use this tool to update the status of a sent estimate to accepted once your customer has approved it.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/status/accepted".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def decline_estimate( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization for which the estimate is being declined." + ], + estimate_identifier: Annotated[str, "Unique identifier of the estimate to mark as declined."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_estimate_declined'."]: + """Marks a sent estimate as declined if rejected by customer. + + Use this tool to update the status of an estimate to 'declined' when a customer has rejected it. This is helpful in maintaining accurate records of customer interactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/status/declined".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def submit_estimate_for_approval( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books that the estimate belongs to.", + ], + estimate_identifier: Annotated[ + str, "Unique identifier of the estimate to be submitted for approval." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit_estimate'."]: + """Submit an estimate for approval. + + Use this tool to submit a specific estimate for approval by providing the estimate ID. It facilitates the approval workflow for estimates in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/submit".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def approve_estimate( + context: ToolContext, + organization_id: Annotated[ + str, + "The ID of the organization in Zoho Books whose estimate is being approved. This should be the unique identifier associated with the organization.", # noqa: E501 + ], + estimate_identifier: Annotated[ + str, "Unique identifier for the estimate to be approved in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'approve_estimate'."]: + """Approve an estimate in Zoho Books. + + Use this tool to approve an estimate in the Zoho Books system when you have the estimate ID. It should be called when an estimate needs to be confirmed as approved.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/approve".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def send_estimate_email( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization. This ID is required to send an estimate email. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + estimate_identifier: Annotated[ + str | None, + "Unique identifier of the estimate to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + email_attachments: Annotated[ + str | None, + "Files to be attached to the email estimate. Provide file paths or URLs. 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 'email_estimate'."]: + """Send an email estimate to a customer. + + Use this tool to email an estimate to a customer. If no specific content is provided, the default email content will be used. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["SENDESTIMATEEMAIL_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not estimate_identifier: + missing_params.append(("estimate_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SENDESTIMATEEMAIL_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["SENDESTIMATEEMAIL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SENDESTIMATEEMAIL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "attachments": email_attachments, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_estimate_email_content( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which you want to retrieve the estimate email content." + ], + email_template_id: Annotated[ + str, + "Optional. Specify a template ID to retrieve the email content based on a specific template. If not provided, defaults to the customer's associated or default template.", # noqa: E501 + ], + estimate_id: Annotated[ + str, "Unique identifier for the estimate to retrieve its email content." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_estimate_email'."]: + """Retrieve the email content for a specific estimate. + + Use this tool to get the email content associated with a specific estimate by providing the estimate ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "email_template_id": email_template_id, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def send_estimates_email( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + estimate_ids_to_email: Annotated[ + str, "Comma-separated string of up to 10 estimate IDs to send via email." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'email_multiple_estimates'."]: + """Send multiple estimates to customers via email. + + Use this tool to email up to 10 estimates to your customers efficiently. Ideal for managing and sharing multiple estimates at once.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_id, + "estimate_ids": estimate_ids_to_email, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def export_estimates_as_pdf( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. Required to specify which organization's estimates are to be exported.", # noqa: E501 + ], + estimate_ids: Annotated[ + str, + "Comma-separated list of estimate IDs to include in the PDF. Maximum of 25 IDs allowed.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'bulk_export_estimates_as_pdf'."]: + """Export up to 25 estimates as a single PDF document. + + Use this tool to export multiple estimates (up to 25) in one consolidated PDF document. Ideal for compiling estimates quickly into a single file for review or sharing.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/pdf".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "estimate_ids": estimate_ids, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def export_and_print_estimates( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization whose estimates are to be exported and printed." + ], + estimate_ids_to_export: Annotated[ + str, "Comma-separated list of estimate IDs to export and print. Maximum of 25 IDs allowed." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'bulk_print_estimates'."]: + """Export and print estimates as a PDF file. + + Use this tool to export up to 25 estimates as a PDF file and prepare them for printing.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/print".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "estimate_ids": estimate_ids_to_export, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_estimate_billing_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization in Zoho Books. Required to specify the organization whose estimate billing address is to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + estimate_identifier: Annotated[ + str | None, + "Unique identifier of the estimate to update the billing address. 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_estimate_billing_address'."]: + """Updates the billing address for a specific estimate. + + Use this tool to update the billing address for a specific estimate in Zoho Books. Call this tool when there's a need to change the billing details associated with an individual estimate. + + 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[ + "UPDATEESTIMATEBILLINGADDRESS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not estimate_identifier: + missing_params.append(("estimate_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEESTIMATEBILLINGADDRESS_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["UPDATEESTIMATEBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/address/billing".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEESTIMATEBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_estimate_shipping_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization in Zoho Books whose estimate's shipping address is to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + estimate_identifier: Annotated[ + str | None, + "Unique identifier of the estimate to update its shipping address. 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_estimate_shipping_address'." +]: + """Updates the shipping address for an existing estimate in Zoho Books. + + This tool is used to update the shipping address for a specific estimate in the Zoho Books system. It should be called when there's a need to modify the delivery details associated with an existing estimate. + + 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[ + "UPDATEESTIMATESHIPPINGADDRESS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not estimate_identifier: + missing_params.append(("estimate_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEESTIMATESHIPPINGADDRESS_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["UPDATEESTIMATESHIPPINGADDRESS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/address/shipping".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEESTIMATESHIPPINGADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_estimate_templates( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization to fetch estimate templates."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_estimate_templates'."]: + """Retrieve all estimate PDF templates. + + This tool retrieves a list of all available PDF templates used for estimates. It should be called when users need to view or select templates for estimate documents.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/templates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_estimate_template( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization for which the estimate template is being updated." + ], + estimate_identifier: Annotated[ + str, "Provide the unique identifier for the specific estimate you want to update." + ], + estimate_template_identifier: Annotated[ + str, "Unique identifier for the estimate template to update in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update_estimate_template'."]: + """Update the PDF template for an estimate. + + Use this tool to update the PDF template associated with a specific estimate in Zoho Books by providing the estimate and template IDs.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/templates/{template_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + estimate_id=estimate_identifier, + template_id=estimate_template_identifier, + ), + method="PUT", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_estimate_comments( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization whose estimate comments are needed." + ], + estimate_identifier: Annotated[ + str, "Unique identifier for the estimate to retrieve its history and comments." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_estimate_comments'."]: + """Get the complete history and comments of an estimate. + + This tool retrieves all comments and historical data associated with a specific estimate. Use it to track changes or discussions about an estimate.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_estimate_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization within Zoho Books. It is required to specify which organization's estimate is being commented on. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + estimate_identifier: Annotated[ + str | None, + "Unique identifier for the specific estimate to comment on. 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 'create_estimate_comment'."]: + """Add a comment for a specific estimate in Zoho Books. + + Use this tool to add a comment to an existing estimate in Zoho Books. Call it when you need to append notes or feedback to an estimate record. + + 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["ADDESTIMATECOMMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not estimate_identifier: + missing_params.append(("estimate_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDESTIMATECOMMENT_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["ADDESTIMATECOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), estimate_id=estimate_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDESTIMATECOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_estimate_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The ID representing the organization. Required to update the comment in the specified organization's estimate. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + estimate_identifier: Annotated[ + str | None, + "Unique identifier of the estimate to update the comment for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + comment_unique_identifier: Annotated[ + str | None, + "The unique identifier of the comment to be updated on an estimate. 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_estimate_comment'."]: + """Update an existing comment on an estimate. + + Use this tool to update a specific comment associated with an estimate in Zoho Books. + + 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[ + "UPDATEESTIMATECOMMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not estimate_identifier: + missing_params.append(("estimate_identifier", "path")) + if not comment_unique_identifier: + missing_params.append(("comment_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEESTIMATECOMMENT_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["UPDATEESTIMATECOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + estimate_id=estimate_identifier, + comment_id=comment_unique_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEESTIMATECOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.estimates.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_estimate_comment( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization where the estimate comment is located." + ], + estimate_unique_id: Annotated[ + str, + "The unique identifier for the estimate, required to specify which estimate's comment to delete.", # noqa: E501 + ], + comment_unique_identifier: Annotated[str, "Unique identifier of the comment to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_estimate_comment'."]: + """Delete an estimate comment. + + Use this tool to remove a comment from an estimate in Zoho Books. Ideal for cleaning up or managing comments related to estimates.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/estimates/{estimate_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + estimate_id=estimate_unique_id, + comment_id=comment_unique_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_expense( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the expense is being recorded. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + expense_receipt_file: Annotated[ + str | None, + "File path or URL for the expense receipt. Accepted formats: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx. 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 'create_expense'."]: + """Create a billable or non-billable expense record. + + Use this tool to create an expense entry that can be marked as billable or non-billable. Ideal for tracking expenses in your financial system. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEEXPENSE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEEXPENSE_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["CREATEEXPENSE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/expenses".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEEXPENSE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "receipt": expense_receipt_file, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_expenses( + context: ToolContext, + organization_id: Annotated[ + str, "Unique identifier for the organization whose expenses are being queried." + ], + search_by_description: Annotated[ + str | None, + "Search expenses by description, supports 'description_startswith' and 'description_contains'. Max-length is 100 characters.", # noqa: E501 + ] = None, + search_by_reference_number: Annotated[ + str | None, + "Search expenses by part or complete reference number using 'startswith' or 'contains'. Max-length is 100 characters.", # noqa: E501 + ] = None, + filter_by_date: Annotated[ + str | None, + "Search expenses by expense date. Use variants: date_start, date_end, date_before, or date_after. Format [yyyy-mm-dd].", # noqa: E501 + ] = None, + expense_status: Annotated[ + str | None, + "Search expenses by status. Allowed values: unbilled, invoiced, reimbursed, non-billable, billable.", # noqa: E501 + ] = None, + amount_filter: Annotated[ + float | None, + "Search expenses by amount using the variants: less_than, less_equals, greater_than, or greater_equals.", # noqa: E501 + ] = None, + search_expense_account_name: Annotated[ + str | None, + "Search expenses by account name. Use 'startswith:' or 'contains:'. Max length is 100 characters.", # noqa: E501 + ] = None, + customer_name_filter: Annotated[ + str | None, + "Filter expenses by customer name. Supports 'startswith' and 'contains' variants. Max length is 100 characters.", # noqa: E501 + ] = None, + vendor_name_filter: Annotated[ + str | None, + "Filter expenses by vendor name using 'vendor_name_startswith' or 'vendor_name_contains'.", + ] = None, + expense_account_customer_id: Annotated[ + str | None, + "The ID of the expense account for the customer. Use this to filter expenses specific to a customer's account.", # noqa: E501 + ] = None, + vendor_id: Annotated[str | None, "ID of the vendor associated with the expense."] = None, + recurring_expense_id: Annotated[ + str | None, "The ID used to search for expenses associated with a recurring expense." + ] = None, + paid_through_account_id: Annotated[ + str | None, "The ID of the account through which the expense was paid." + ] = None, + search_expenses_text: Annotated[ + str | None, + "Search expenses by account name, description, customer name, or vendor name. Maximum length is 100 characters.", # noqa: E501 + ] = None, + sort_expenses_by: Annotated[ + str | None, + "Sort expenses by the specified column. Allowed values: date, account_name, total, bcy_total, reference_number, customer_name, created_time.", # noqa: E501 + ] = None, + expense_status_filter: Annotated[ + str | None, + "Filter expenses by status. Allowed values: 'Status.All', 'Status.Billable', 'Status.Nonbillable', 'Status.Reimbursed', 'Status.Invoiced', 'Status.Unbilled'.", # noqa: E501 + ] = None, + page_number: Annotated[int | None, "Page number to fetch, with the default starting at 1."] = 1, + records_per_page: Annotated[ + int | None, "Number of expense records to fetch per page. Defaults to 200 if not specified." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_expenses'."]: + """Retrieve a list of expenses with pagination. + + Use this tool to get a paginated list of all expenses recorded in the system.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/expenses".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "description": search_by_description, + "reference_number": search_by_reference_number, + "date": filter_by_date, + "status": expense_status, + "amount": amount_filter, + "account_name": search_expense_account_name, + "customer_name": customer_name_filter, + "vendor_name": vendor_name_filter, + "customer_id": expense_account_customer_id, + "vendor_id": vendor_id, + "recurring_expense_id": recurring_expense_id, + "paid_through_account_id": paid_through_account_id, + "search_text": search_expenses_text, + "sort_column": sort_expenses_by, + "filter_by": expense_status_filter, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_expense_with_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization for which the expense update is intended. It is required to identify the target organization in the API. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_field_api_name: Annotated[ + str | None, + "API name of the unique custom field used to identify the expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "The unique value for the custom field used to update or create an expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + allow_upsert_new_expense: Annotated[ + bool | None, + "Set to true to create a new expense if no matching unique custom field value is found. 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_expense_using_custom_field'." +]: + """Update or create an expense using custom field values. + + This tool updates an existing expense based on a unique custom field value. If the unique value doesn't match any existing expenses, and the X-Upsert header is true, a new expense will be created if all required details are provided. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEEXPENSEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEEXPENSEWITHCUSTOMFIELD_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["UPDATEEXPENSEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/expenses".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEEXPENSEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": allow_upsert_new_expense, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_existing_expense( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization. Required to identify which organization's expense is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + expense_identifier: Annotated[ + str | None, + "The unique identifier for the expense to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + expense_receipt_file: Annotated[ + str | None, + "File path of the expense receipt to attach. Allowed extensions are gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, and docx. Ensure the file is accessible and in an accepted format. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + delete_receipt: Annotated[ + bool | None, + "Set to true to remove the attached receipt from the expense. Use false to keep it. 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_expense'."]: + """Update an existing expense in Zoho Books. + + Use this tool to modify details of an existing expense in Zoho Books. It should be called when you need to change information such as amount, date, or description of a recorded expense. + + 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[ + "UPDATEEXISTINGEXPENSE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not expense_identifier: + missing_params.append(("expense_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEEXISTINGEXPENSE_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["UPDATEEXISTINGEXPENSE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/expenses/{expense_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), expense_id=expense_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEEXISTINGEXPENSE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "receipt": expense_receipt_file, + "delete_receipt": delete_receipt, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_expense_details( + context: ToolContext, + organization_identifier: Annotated[ + str, + "String representing the ID of the organization for which the expense details are requested.", # noqa: E501 + ], + expense_identifier: Annotated[ + str, "Unique identifier for the expense to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_expense'."]: + """Retrieve details of a specific expense by ID. + + Use this tool to get detailed information about an expense by providing the expense ID. Ideal for financial reviews or tracking specific expenses.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/expenses/{expense_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), expense_id=expense_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_expense_entry( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique identifier for the organization within Zoho Books." + ], + expense_identifier: Annotated[ + str, "Unique identifier of the expense to be deleted in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_expense'."]: + """Delete an existing expense entry in Zoho Books. + + Use this tool to delete a specific expense entry from Zoho Books when you need to remove an incorrect or unnecessary record.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/expenses/{expense_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), expense_id=expense_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_expense_comments( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization in Zoho Books required to fetch the expense comments.", # noqa: E501 + ], + expense_unique_id: Annotated[ + str, "Unique identifier for the expense to retrieve its comments and history in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_expense_comments'."]: + """Retrieve comments and history for a specific expense. + + This tool should be called to get the discussion and history associated with an expense, specified by its ID, in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/expenses/{expense_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), expense_id=expense_unique_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_company_employees( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization whose employees are being listed. This should be provided as a string.", # noqa: E501 + ], + page_number: Annotated[ + int | None, "The page number to fetch. Default is 1 for the first page." + ] = 1, + records_per_page: Annotated[ + int | None, + "Specify the number of employee records to retrieve per page, with a default of 200.", + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_employees'."]: + """Retrieve a paginated list of all employees. + + Use this tool to obtain a list of employees from the company database, including pagination for handling large sets of data. Ideal for getting employee details in an organized manner.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/employees".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_employee_for_expense( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books where the employee will be created. 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 'create_employee'."]: + """Create an employee for an expense record in Zoho Books. + + This tool is used to create a new employee entry for the purpose of logging an expense in Zoho Books. It should be called when there is a need to register an employee related to specific expenses. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEEMPLOYEEFOREXPENSE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEEMPLOYEEFOREXPENSE_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["CREATEEMPLOYEEFOREXPENSE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/employees".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEEMPLOYEEFOREXPENSE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_employee_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization in Zoho Books. This ID is necessary to specify which organization's employee details are being requested.", # noqa: E501 + ], + employee_unique_id: Annotated[ + str, "The unique identifier for the employee whose details are to be fetched in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_employee'."]: + """Retrieve detailed information about an employee. + + This tool is used to obtain comprehensive details of a specific employee by their ID in Zoho Books. It should be called when detailed employee information is needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/employees/{employee_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), employee_id=employee_unique_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_employee_record( + context: ToolContext, + organization_identifier: Annotated[ + str, "ID of the organization to uniquely identify it for employee deletion." + ], + employee_identifier: Annotated[ + str, "The unique identifier for the employee to be deleted in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_employee'."]: + """Remove an employee from the records in Zoho Books. + + This tool is used to delete an existing employee in Zoho Books. It should be called when there is a need to permanently remove an employee's record from the system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/employee/{employee_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), employee_id=employee_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_expense_receipt( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID of the organization in Zoho Books. Required to retrieve the expense receipt.", # noqa: E501 + ], + expense_identifier: Annotated[ + str, + "Unique identifier for the expense to retrieve its receipt. Required for locating the specific expense in Zoho Books.", # noqa: E501 + ], + get_receipt_thumbnail: Annotated[ + bool | None, + "Set to true to get a thumbnail of the receipt; false returns the full receipt.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_expense_receipt'."]: + """Retrieve the receipt attached to an expense. + + Use this tool to obtain the receipt attached to a specific expense entry in Zoho Books. It is useful for reviewing or auditing expense details by accessing the actual receipt document.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/expenses/{expense_id}/receipt".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), expense_id=expense_identifier + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "preview": get_receipt_thumbnail, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def attach_expense_receipt( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + expense_id: Annotated[ + str, "Unique identifier for the expense to which the receipt will be attached." + ], + expense_receipt_file: Annotated[ + str | None, + "The file to attach as an expense receipt. Supported formats: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'create_expense_receipt'."]: + """Attach a receipt to a specified expense. + + Use this tool to attach a receipt file to an existing expense record, identified by the expense ID. It is helpful when you need to provide proof or documentation for expense entries in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/expenses/{expense_id}/receipt".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), expense_id=expense_id + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_id, + "receipt": expense_receipt_file, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_expense_receipt( + context: ToolContext, + organization_id: Annotated[ + str, + "The ID of the organization for which the expense receipt is to be deleted. Ensure it's accurate to target the correct entity.", # noqa: E501 + ], + expense_id: Annotated[str, "Unique identifier for the expense whose receipt is to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_expense_receipt'."]: + """Deletes the receipt attached to an expense. + + Use this tool to remove the receipt associated with a specific expense in Zoho Books, identified by the expense ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/expenses/{expense_id}/receipt".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), expense_id=expense_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_fixed_asset( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books for which the fixed asset is being created. 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 'create_fixed_asset'."]: + """Create a fixed asset in Zoho Books. + + This tool is used to create a fixed asset in the Zoho Books platform. It should be called when a user wants to register a new fixed asset in their accounting records. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEFIXEDASSET_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEFIXEDASSET_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["CREATEFIXEDASSET_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/fixedassets".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEFIXEDASSET_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_fixed_assets_list( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization for which to list fixed assets." + ], + filter_fixed_asset_status: Annotated[ + str | None, + "Filter the fixed asset list by status. Valid inputs: Status.All, Status.Active, Status.Cancel, Status.FullyDepreciated, Status.WriteOff, Status.Sold, Status.Draft.", # noqa: E501 + ] = None, + sort_by_column: Annotated[ + str | None, + "Specify the column to sort the fixed asset list. Choose from: asset_name, asset_number, asset_cost, created_time, current_asset_value.", # noqa: E501 + ] = None, + sort_order: Annotated[ + str | None, + "Sort the fixed asset list in ascending or descending order. Use 'A' for ascending and 'D' for descending.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, + "The page number to fetch from the fixed asset list. Defaults to 1 if not specified.", + ] = 1, + records_per_page: Annotated[ + int | None, "Number of fixed asset records to fetch per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_fixed_assets'."]: + """Retrieve a list of fixed assets from Zoho Books. + + Use this tool to obtain a detailed list of fixed assets stored in Zoho Books. Ideal for managing and reviewing asset inventories.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassets".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "filter_by": filter_fixed_asset_status, + "sort_column": sort_by_column, + "sort_order": sort_order, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_fixed_asset_info( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization whose fixed asset you wish to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + fixed_asset_identifier: Annotated[ + str | None, + "Unique identifier for the specific fixed asset to update. 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_fixed_asset'."]: + """Update fixed asset details in Zoho Books. + + Use this tool to update the information of a specific fixed asset in Zoho Books by providing the necessary asset details. + + 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["UPDATEFIXEDASSETINFO_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not fixed_asset_identifier: + missing_params.append(("fixed_asset_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEFIXEDASSETINFO_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["UPDATEFIXEDASSETINFO_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEFIXEDASSETINFO_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_fixed_asset_details( + context: ToolContext, + organization_id: Annotated[ + str, "Provide the ID of the organization for which you want to retrieve the asset details." + ], + fixed_asset_identifier: Annotated[ + str, "Unique identifier for the fixed asset to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_fixed_asset'."]: + """Retrieve details of a fixed asset using its ID. + + This tool is used to obtain detailed information about a fixed asset by providing its unique ID. It should be called when you need specific details about an asset in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_fixed_asset( + context: ToolContext, + organization_id: Annotated[ + str, + "The ID of the organization from which the fixed asset will be deleted. Ensure this ID corresponds to the correct organization.", # noqa: E501 + ], + fixed_asset_identifier: Annotated[ + str, + "Unique identifier of the fixed asset to be deleted. This ID is required to specify which asset to remove.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_fixed_asset'."]: + """Delete a specified fixed asset. + + Use this tool to delete a fixed asset by providing its ID. This action is irreversible, so ensure you have the correct ID before proceeding.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_asset_history( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization whose asset history is being requested." + ], + fixed_asset_identifier: Annotated[ + str, "Unique identifier for the fixed asset. Required to fetch its detailed history." + ], + page_number: Annotated[int | None, "Page number to retrieve, with a default value of 1."] = 1, + records_per_page: Annotated[ + int | None, "Number of records to fetch per page. Defaults to 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_fixed_asset_history'."]: + """Fetch the detailed history of a specific fixed asset. + + This tool retrieves a comprehensive history of a fixed asset, detailing its journey from acquisition to write-off. It should be called when you need insights into a fixed asset's lifecycle.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/history".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_asset_depreciation_summary( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID of the organization for which the asset's future depreciation rates are to be retrieved.", # noqa: E501 + ], + fixed_asset_identifier: Annotated[ + str, "Unique identifier for the fixed asset to fetch its future depreciation rates." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_fixed_asset_forecast'."]: + """Displays detailed future depreciation rates for a fixed asset. + + Use this tool to obtain a summary of an asset's future depreciation rates. It is helpful for financial forecasting and decision-making regarding fixed assets.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/forecast".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def activate_fixed_asset( + context: ToolContext, + organization_id: Annotated[ + str, + "ID of the organization. This is required to identify which organization's asset to activate.", # noqa: E501 + ], + fixed_asset_id: Annotated[ + str, "Unique identifier of the fixed asset to activate for depreciation calculation." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_fixed_asset_active'."]: + """Activate a fixed asset to begin depreciation calculation. + + Use this tool to mark a fixed asset as active, which will initiate the calculation of its depreciation.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/status/active".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), fixed_asset_id=fixed_asset_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def cancel_fixed_asset( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. Required to specify which organization's fixed asset to cancel.", # noqa: E501 + ], + fixed_asset_id: Annotated[str, "Unique identifier for the fixed asset to be canceled."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_fixed_asset_cancel'."]: + """Cancel a fixed asset in Zoho Books. + + Use this tool to cancel a fixed asset in Zoho Books by providing the fixed asset ID. This changes the status of the asset to canceled.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/status/cancel".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), fixed_asset_id=fixed_asset_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_fixed_asset_as_draft( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization for which the fixed asset status will be changed." + ], + fixed_asset_identifier: Annotated[str, "Unique identifier for the fixed asset in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_fixed_asset_draft'."]: + """Set a fixed asset status to draft in Zoho Books. + + Use this tool to change the status of a specific fixed asset to draft in Zoho Books. This is useful when revising asset details or temporarily removing it from active use.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/status/draft".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def write_off_fixed_asset( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Required to specify which organization's asset is to be written off. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + fixed_asset_identifier: Annotated[ + str | None, + "Unique identifier of the fixed asset to be written off in Zoho Books. 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 'write_off_fixed_asset'."]: + """Remove a fixed asset from the records. + + Use this tool to write off a fixed asset. It should be called when an asset needs to be removed from the records in Zoho Books. + + 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["WRITEOFFFIXEDASSET_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not fixed_asset_identifier: + missing_params.append(("fixed_asset_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["WRITEOFFFIXEDASSET_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["WRITEOFFFIXEDASSET_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/writeoff".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["WRITEOFFFIXEDASSET_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def sell_fixed_asset( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + fixed_asset_identifier: Annotated[ + str | None, + "Unique identifier of the fixed asset to be sold. 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 'sell_fixed_asset'."]: + """Initiate the sale of a specified fixed asset. + + Use this tool to sell a specific fixed asset by providing its asset ID. It should be called when confirming or completing the sale process of a fixed asset in Zoho Books. + + 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["SELLFIXEDASSET_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not fixed_asset_identifier: + missing_params.append(("fixed_asset_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["SELLFIXEDASSET_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["SELLFIXEDASSET_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/sell".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SELLFIXEDASSET_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_fixed_asset_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books. This is required to add a comment to the fixed asset. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + fixed_asset_identifier: Annotated[ + str | None, + "Unique identifier for the fixed asset to add a comment. 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 'create_fixed_asset_comment'."]: + """Add a comment to a fixed asset in Zoho Books. + + + + 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["ADDFIXEDASSETCOMMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not fixed_asset_identifier: + missing_params.append(("fixed_asset_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDFIXEDASSETCOMMENT_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["ADDFIXEDASSETCOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDFIXEDASSETCOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_asset_comment( + context: ToolContext, + organization_id: Annotated[ + str, + "Provide the ID of the organization to specify which organization's asset comment you want to delete.", # noqa: E501 + ], + fixed_asset_identifier: Annotated[ + str, "Unique identifier of the fixed asset to delete a comment from." + ], + comment_id: Annotated[ + str, "Unique identifier of the comment to be deleted from the fixed asset." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_fixed_asset_comment'."]: + """Delete a comment from a fixed asset in Zoho Books. + + Use this tool to delete an existing comment on a fixed asset within Zoho Books by specifying the fixed asset and comment IDs.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_id=fixed_asset_identifier, + comment_id=comment_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_fixed_asset_type( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which to create the fixed asset type. 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 'create_fixed_asset_type'."]: + """Create a fixed asset type in Zoho Books. + + Use this tool to create a new fixed asset type in Zoho Books whenever you need to categorize assets. It facilitates asset management by defining specific asset categories. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEFIXEDASSETTYPE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEFIXEDASSETTYPE_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["CREATEFIXEDASSETTYPE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/fixedassettypes".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEFIXEDASSETTYPE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_fixed_asset_type_list( + context: ToolContext, + organization_id: Annotated[ + str, "Unique identifier for the organization to retrieve asset types for." + ], + page_number_to_fetch: Annotated[ + int | None, + "The page number to retrieve for the list of fixed asset types. Defaults to 1 if not specified.", # noqa: E501 + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to fetch per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_fixed_asset_type_list'."]: + """Retrieve a list of fixed asset types. + + Call this tool to obtain a list of all available fixed asset types in Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassettypes".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_fixed_asset_type( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + fixed_asset_type_identifier: Annotated[ + str | None, + "Unique identifier for the fixed asset type to be updated in Zoho Books. 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_fixed_asset_type'."]: + """Update a fixed asset type with new information. + + Use this tool to update the details of a fixed asset type by providing the relevant asset type ID and new information. It should be called when modifying asset categories in Zoho Books. + + 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["UPDATEFIXEDASSETTYPE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not fixed_asset_type_identifier: + missing_params.append(("fixed_asset_type_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEFIXEDASSETTYPE_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["UPDATEFIXEDASSETTYPE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/fixedassettypes/{fixed_asset_type_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_type_id=fixed_asset_type_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEFIXEDASSETTYPE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.fixedasset.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_fixed_asset_type( + context: ToolContext, + organization_id: Annotated[str, "The unique ID of the organization within Zoho Books."], + fixed_asset_type_identifier: Annotated[ + str, "Unique identifier for the fixed asset type to delete." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_fixed_asset_type'."]: + """Deletes a specified fixed asset type from the system.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/fixedassettypes/{fixed_asset_type_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + fixed_asset_type_id=fixed_asset_type_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def import_customer_from_crm( + context: ToolContext, + organization_id: Annotated[str, "Unique identifier for the organization within Zoho Books."], + crm_account_id: Annotated[ + str, "Unique identifier of the Zoho CRM account to import the customer from." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'import_customer_using_crm_account_id'." +]: + """Import a customer from Zoho CRM to Zoho Books using CRM account ID. + + Use this tool to import a customer from Zoho CRM into Zoho Books by providing the CRM account ID. This requires integration between Zoho Books and Zoho CRM either through Accounts and Contacts sync or Accounts only sync.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/crm/account/{crm_account_id}/import".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), crm_account_id=crm_account_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def crm_to_books_contact_import( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization within Zoho Books." + ], + zoho_crm_contact_id: Annotated[ + str, "Unique identifier for the Zoho CRM contact to import into Zoho Books." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'import_customer_using_crm_contact_id'." +]: + """Import a customer from Zoho CRM to Zoho Books using CRM contact ID. + + Use this tool when you need to import a customer from Zoho CRM to Zoho Books based on their CRM contact ID. Ensure that Zoho Books is integrated with Zoho CRM using the correct sync settings for contacts.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/crm/contact/{crm_contact_id}/import".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + crm_contact_id=zoho_crm_contact_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.contacts.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def import_vendor_from_crm( + context: ToolContext, + organization_id: Annotated[ + str, + "The ID of the organization in Zoho Books for which the vendor is being imported. This ID is used to specify the target organization in Zoho Books.", # noqa: E501 + ], + zoho_crm_vendor_id: Annotated[str, "Unique identifier of the Zoho CRM vendor to import."], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'import_vendor_using_crm_vendor_id'." +]: + """Import a vendor from Zoho CRM to Zoho Books using CRM vendor ID. + + Use this tool to import a vendor from Zoho CRM to Zoho Books via Vendor-only sync, requiring the CRM vendor ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/crm/vendor/{crm_vendor_id}/import".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), crm_vendor_id=zoho_crm_vendor_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def import_crm_product_to_zoho_books( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID of the organization in Zoho Books. This is required to import products from Zoho CRM.", # noqa: E501 + ], + crm_product_id: Annotated[ + str, "Unique identifier of the Zoho CRM product to be imported into Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint ''."]: + """Import a product from Zoho CRM to Zoho Books. + + Use this tool to import an item from Zoho CRM into Zoho Books by specifying its CRM product ID. This enables synchronization of product data between the two services.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/crm/item/{crm_product_id}/import".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), crm_product_id=crm_product_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_customer_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the invoice is created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + send_invoice_to_contacts: Annotated[ + bool | None, + "Boolean to determine if the invoice is sent to the contact persons. Use 'true' to send, 'false' otherwise. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to ignore auto invoice number generation, requiring manual input. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + enable_quick_create_mode: Annotated[ + bool | None, + "Enable quick create mode for streamlined invoice creation with minimal required fields. Set to true for activation. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + enable_batch_payments: Annotated[ + bool | None, + "Enable batch payment processing for the invoice. True means the invoice is included in batch operations. Requires 'is_quick_create' to be true. 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 'create_invoice'."]: + """Create an invoice for your customer. + + + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECUSTOMERINVOICE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECUSTOMERINVOICE_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["CREATECUSTOMERINVOICE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECUSTOMERINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "send": send_invoice_to_contacts, + "ignore_auto_number_generation": ignore_auto_number_generation, + "is_quick_create": enable_quick_create_mode, + "batch_payments": enable_batch_payments, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_invoice_list( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization for which invoices are being queried. This ID is crucial for accessing the correct set of invoices within Zoho Books.", # noqa: E501 + ], + search_by_invoice_number: Annotated[ + str | None, + "Search for invoices using their unique invoice number. Supports 'startswith' and 'contains' variants. Max length: 100 characters.", # noqa: E501 + ] = None, + search_invoice_by_item_name: Annotated[ + str | None, + "Filters invoices by product or service name in line items. Supports 'item_name_startswith' and 'item_name_contains'. Max length: 100 characters.", # noqa: E501 + ] = None, + search_by_item_id: Annotated[ + str | None, + "Search invoices by item ID. Use the unique identifier of a product or service to filter invoices that include specific line items.", # noqa: E501 + ] = None, + item_description_filter: Annotated[ + str | None, + "Filter invoices by item description using keywords. Supports 'startswith' and 'contains' variants. Max 100 characters.", # noqa: E501 + ] = None, + search_reference_number: Annotated[ + str | None, + "Search invoices by reference number, such as purchase order or project codes, to find invoices associated with specific projects or transactions.", # noqa: E501 + ] = None, + search_by_customer_name: Annotated[ + str | None, + "Search for invoices using the customer's name, with a maximum length of 100 characters, to generate customer-specific reports or find all invoices for a customer.", # noqa: E501 + ] = None, + recurring_invoice_id: Annotated[ + str | None, + "ID of the recurring invoice from which the invoice is created. Use to filter invoices tied to specific recurring billing cycles.", # noqa: E501 + ] = None, + customer_email_filter: Annotated[ + str | None, + "Filter invoices by the customer's email address. Maximum length is 100 characters. Ideal for finding specific customer invoices or customer segment analysis.", # noqa: E501 + ] = None, + search_by_total_amount: Annotated[ + str | None, + "Search and filter invoices based on the final total amount, including taxes, discounts, and adjustments. Useful for finding invoices within specific price ranges or identifying high-value transactions.", # noqa: E501 + ] = None, + search_by_outstanding_balance: Annotated[ + str | None, + "Filter invoices by outstanding balance to find overdue invoices, track receivables, or generate aging reports.", # noqa: E501 + ] = None, + search_by_custom_field: Annotated[ + str | None, + "Search invoices using custom fields. Supports 'custom_field_startswith' and 'custom_field_contains' for partial matching.", # noqa: E501 + ] = None, + invoice_date_filter: Annotated[ + str | None, + "Filter invoices by invoice date using yyyy-mm-dd format. Supports variants like date_start, date_end, date_before, and date_after to find invoices within specific date ranges.", # noqa: E501 + ] = None, + invoice_due_date_filter: Annotated[ + str | None, + "Filter invoices by due date using yyyy-mm-dd format. Supports start, end, before, and after variants for flexible searching.", # noqa: E501 + ] = None, + filter_by_creation_date: Annotated[ + str | None, + "Filter invoices by creation date with yyyy-mm-dd format. Supports variants: start, end, before, and after.", # noqa: E501 + ] = None, + filter_by_last_modified_time: Annotated[ + str | None, + "Filters invoices modified after a specific timestamp in YYYY-MM-DDTHH:MM:SS-UTC format. Useful for identifying recently updated invoices.", # noqa: E501 + ] = None, + invoice_status: Annotated[ + str | None, "Filter invoices by their current status (e.g., sent, draft, overdue, etc.)." + ] = None, + search_by_customer_id: Annotated[ + str | None, + "Filters invoices using the unique customer ID. Use the ID from the Contacts API to find all invoices for a specific customer.", # noqa: E501 + ] = None, + filter_invoices_by_criteria: Annotated[ + str | None, + "Filter invoices by status (e.g., Status.Sent, Status.Paid) or payment expected date using Date.PaymentExpectedDate.", # noqa: E501 + ] = None, + general_search_text: Annotated[ + str | None, + "General search for invoices by invoice number, purchase order, or customer name. Accepts up to 100 characters.", # noqa: E501 + ] = None, + sort_by_column: Annotated[ + str | None, + "Specify the column to sort invoices by. Options: customer_name, invoice_number, date, due_date, total, balance, created_time.", # noqa: E501 + ] = None, + search_by_crm_potential_id: Annotated[ + int | None, + "Find invoices linked to a specific CRM deal or opportunity using its potential ID from Zoho CRM.", # noqa: E501 + ] = None, + response_format_type: Annotated[ + int | None, + "Specifies the desired response format: 0 for all invoices, 1 for all invoices with counts and totals, 2 for count only, 3 for count and totals, 4 for invoices and totals.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, + "Page number to fetch from paginated results. Default is 1. Use with 'per_page' for navigating large data sets.", # noqa: E501 + ] = 1, + records_per_page: Annotated[ + int | None, + "Number of records to fetch per page. Default is 200, maximum is 200. Use to control result size for performance optimization.", # noqa: E501 + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_invoices'."]: + """Retrieve and organize a list of invoices from Zoho Books. + + This tool fetches a list of invoices using Zoho Books' API with options for pagination, filtering, searching, and sorting. Useful for finding specific invoices or browsing records systematically.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "invoice_number": search_by_invoice_number, + "item_name": search_invoice_by_item_name, + "item_id": search_by_item_id, + "item_description": item_description_filter, + "reference_number": search_reference_number, + "customer_name": search_by_customer_name, + "recurring_invoice_id": recurring_invoice_id, + "email": customer_email_filter, + "total": search_by_total_amount, + "balance": search_by_outstanding_balance, + "custom_field": search_by_custom_field, + "date": invoice_date_filter, + "due_date": invoice_due_date_filter, + "created_date": filter_by_creation_date, + "last_modified_time": filter_by_last_modified_time, + "status": invoice_status, + "customer_id": search_by_customer_id, + "filter_by": filter_invoices_by_criteria, + "search_text": general_search_text, + "sort_column": sort_by_column, + "zcrm_potential_id": search_by_crm_potential_id, + "response_option": response_format_type, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_invoice_by_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. This is required to specify which organization's invoice should be updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_api_name: Annotated[ + str | None, + "The API name of the unique custom field used to locate the invoice to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_field_value: Annotated[ + str | None, + "The unique value of the custom field used to find or create the invoice. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_new_invoice_if_not_found: Annotated[ + bool | None, + "Set to true to create a new invoice if the unique custom field value is not found in existing invoices. 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_invoice_using_custom_field'." +]: + """Update or create an invoice using a custom field value. + + Call this tool to update an existing invoice or create a new one using a custom field's unique value. If the value is not found and X-Upsert is true, a new invoice will be created if all required details are provided. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEINVOICEBYCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINVOICEBYCUSTOMFIELD_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["UPDATEINVOICEBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINVOICEBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_api_name, + "X-Unique-Identifier-Value": custom_field_value, + "X-Upsert": create_new_invoice_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization to which the invoice belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_id: Annotated[ + str | None, + "Unique identifier of the invoice to be updated. Ensure this ID corresponds to an existing invoice. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + ignore_auto_invoice_number_generation: Annotated[ + bool | None, + "Set to true to ignore automatic invoice number generation, requiring manual entry of the invoice number. 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_invoice'."]: + """Update details of an existing invoice in Zoho Books. + + Use this tool to modify the details of an existing invoice. If you need to remove a line item, simply exclude it from the line_items list. + + 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["UPDATEINVOICE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not invoice_id: + missing_params.append(("invoice_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEINVOICE_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["UPDATEINVOICE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "ignore_auto_number_generation": ignore_auto_invoice_number_generation, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_invoice_details( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization for which the invoice details are requested." + ], + invoice_identifier: Annotated[ + str, "Unique identifier of the invoice. Used to specify which invoice details to retrieve." + ], + format_type: Annotated[ + str | None, "Specify the format for invoice details: json, pdf, or html. Default is json." + ] = None, + print_pdf: Annotated[ + bool | None, "Boolean value indicating whether to print the exported PDF." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_invoice'."]: + """Retrieve details of a specific invoice by ID. + + This tool is used to get detailed information about a specific invoice using its ID. It can be called when needing to verify invoice details, check status, or confirm amounts.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "print": print_pdf, + "accept": format_type, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_invoice_in_zoho_books( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the invoice is to be deleted in Zoho Books." + ], + invoice_identifier: Annotated[str, "Unique identifier of the invoice to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_invoice'."]: + """Delete an existing invoice in Zoho Books. + + Use this tool to delete an existing invoice in Zoho Books. Note that invoices with payments or credit notes applied cannot be deleted.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_invoice_as_sent( + context: ToolContext, + organization_id: Annotated[ + str, "Unique identifier of the organization for which the invoice will be marked as sent." + ], + invoice_unique_identifier: Annotated[ + str, "Unique identifier of the invoice to be marked as sent." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_invoice_sent'."]: + """Mark a draft invoice as sent. + + Use this tool to change the status of a draft invoice to 'sent'. Ideal for when an invoice is ready to be sent out to a client.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/status/sent".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_unique_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def void_invoice_status( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books. Required to specify which organization the invoice belongs to.", # noqa: E501 + ], + invoice_unique_identifier: Annotated[ + str, "Unique identifier for the invoice to be marked as void." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_invoice_void'."]: + """Mark an invoice as void in Zoho Books. + + Use this tool to change the status of an invoice to void in Zoho Books. This process will unassociate any payments and credits, placing them under customer credits.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/status/void".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_unique_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_invoice_as_draft( + context: ToolContext, + organization_identifier: Annotated[str, "The unique ID of the organization in Zoho Books."], + invoice_identifier: Annotated[str, "Unique identifier of the invoice to be marked as draft."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_invoice_draft'."]: + """Mark a voided invoice as draft in Zoho Books. + + This tool is used to change the status of a voided invoice to draft in Zoho Books. It should be called when there is a need to edit or resubmit an invoice previously marked as void.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/status/draft".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def send_invoices_email( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The organization ID for which invoices will be emailed. Required for sending emails. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + comma_separated_invoice_ids: Annotated[ + str | None, + "Comma separated list of invoice IDs to be emailed. Maximum 10 IDs. 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 'email_invoices'."]: + """Send up to 10 invoices by email to customers. + + This tool is used to email invoices to your customers, allowing you to send up to 10 invoices in a single request. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["SENDINVOICESEMAIL_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not comma_separated_invoice_ids: + missing_params.append(("comma_separated_invoice_ids", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SENDINVOICESEMAIL_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["SENDINVOICESEMAIL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SENDINVOICESEMAIL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "invoice_ids": comma_separated_invoice_ids, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_invoice_from_sales_order( + context: ToolContext, + sales_order_id: Annotated[ + str, "The unique identifier of the confirmed sales order to create an invoice for." + ], + organization_id: Annotated[ + str, + "ID of the organization for which the invoice is being created. This must be a valid string ID.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'create_invoice_from_salesorder'."]: + """Create an invoice from a confirmed sales order. + + Use this tool to instantly generate an invoice based on confirmed sales orders. Ideal for automating billing processes directly from sales orders.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/fromsalesorder".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + params=remove_none_values({ + "salesorder_id": sales_order_id, + "organization_id": organization_id, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def associate_invoice_with_sales_order( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Required for linking invoices with sales orders. 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 'map_invoice_with_salesorder'."]: + """Link existing invoices to sales orders for tracking. + + This tool is used to associate existing invoices with one or more sales orders, enabling better tracking and management of orders and billing. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "ASSOCIATEINVOICEWITHSALESORDER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ASSOCIATEINVOICEWITHSALESORDER_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["ASSOCIATEINVOICEWITHSALESORDER_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/mapwithorder".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ASSOCIATEINVOICEWITHSALESORDER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def submit_invoice_for_approval( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + invoice_unique_id: Annotated[ + str, "The unique identifier for the invoice to be submitted for approval." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit_invoice'."]: + """Submit an invoice for approval in Zoho Books. + + This tool allows users to submit an invoice for approval using the Zoho Books API. It should be called when an invoice is ready to be reviewed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/submit".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_unique_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def approve_invoice( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization for which the invoice is to be approved." + ], + invoice_identifier: Annotated[str, "Unique identifier of the invoice to approve."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'approve_invoice'."]: + """Approve a specified invoice for processing. + + This tool approves a pending invoice given its ID, making it ready for processing. Call this tool when an invoice requires approval to proceed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/approve".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_invoice_email_content( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique identifier for the organization. Required to retrieve invoice email content for the specified organization.", # noqa: E501 + ], + invoice_identifier: Annotated[ + str, "Unique identifier of the invoice to retrieve its email content." + ], + email_template_id: Annotated[ + str | None, + "Optional. Specify a template ID to get the email content based on a specific template. Defaults to customer-associated or default template if not provided.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_invoice_email'."]: + """Retrieve the email content for a specific invoice. + + Use this tool to get the formatted email content of a particular invoice by specifying the invoice ID. Ideal for scenarios where you need to access or send invoice details via email.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "email_template_id": email_template_id, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def send_invoice_email( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization to which the invoice is linked. This ID is required to specify which organization's invoice is being emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_identifier: Annotated[ + str | None, + "Unique string identifier for the specific invoice to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_email_attachments: Annotated[ + str | None, + "A comma-separated list of file paths to attach to the email. Provide file paths if additional files need to be included with the invoice email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + send_customer_statement: Annotated[ + bool | None, + "Set to 'True' to send the customer statement PDF with the email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + send_invoice_attachment: Annotated[ + bool | None, + "Set to true to attach the invoice with the email; false to exclude it. 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 'email_invoice'."]: + """Email an invoice to a customer with optional content customization. + + This tool is used to email an invoice to a customer. It can be called when there's a need to send invoice details via email, optionally allowing custom content. If no custom content is provided, default mail content will be used. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["SENDINVOICEEMAIL_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not invoice_identifier: + missing_params.append(("invoice_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["SENDINVOICEEMAIL_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["SENDINVOICEEMAIL_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SENDINVOICEEMAIL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "send_customer_statement": send_customer_statement, + "send_attachment": send_invoice_attachment, + "attachments": invoice_email_attachments, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def remind_customer_invoice_payment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. It specifies which organization's invoice reminders to manage. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_identifier: Annotated[ + str | None, + "Unique identifier of the invoice to send a payment reminder for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + email_attachments: Annotated[ + str | None, + "Comma-separated list of file URLs to attach to the reminder email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + include_customer_statement_pdf: Annotated[ + bool | None, + "Set to true to include a customer statement PDF with the email reminder. 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 'remind_customer_for_invoice_payment'." +]: + """Remind customers of unpaid invoices by email. + + Use this tool to notify customers about unpaid invoices through email. It works for invoices that are open or overdue. + + 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[ + "REMINDCUSTOMERINVOICEPAYMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not invoice_identifier: + missing_params.append(("invoice_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REMINDCUSTOMERINVOICEPAYMENT_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["REMINDCUSTOMERINVOICEPAYMENT_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/paymentreminder".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REMINDCUSTOMERINVOICEPAYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "send_customer_statement": include_customer_statement_pdf, + "attachments": email_attachments, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_payment_reminder_email_content( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID for the organization within Zoho Books for which the payment reminder email content is being fetched.", # noqa: E501 + ], + invoice_identifier: Annotated[ + str, "Unique identifier for the specific invoice to fetch the reminder email content." + ], +) -> Annotated[ + dict[str, Any], + "Response from the API endpoint 'get_payment_reminder_mail_content_for_invoice'.", +]: + """Fetch the email content of a payment reminder for an invoice. + + Use this tool to obtain the email content for a payment reminder associated with a specific invoice. Ideal for scenarios where you need to preview or edit reminder emails before sending.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/paymentreminder".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def send_invoice_reminders( + context: ToolContext, + organization_identifier: Annotated[ + str, "Provide the ID of the organization for which the invoice reminders are to be sent." + ], + invoice_ids: Annotated[ + str, + "List of invoice IDs to send reminders for. Only for open or overdue invoices, up to 10 at once.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'bulk_invoice_reminder'."]: + """Send email reminders for unpaid invoices. + + Use this tool to remind customers about unpaid invoices by email. It sends reminder emails only for open or overdue invoices, with a maximum of 10 invoices at a time.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/paymentreminder".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_identifier, + "invoice_ids": invoice_ids, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def export_invoices_as_pdf( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization for which invoices are being exported." + ], + invoice_ids: Annotated[ + str, "Comma-separated list of invoice IDs to export as a PDF. Maximum of 25 IDs allowed." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'bulk_export_invoices_as_pdf'."]: + """Export up to 25 invoices as a single PDF file. + + Use this tool to export multiple invoices into a single PDF document. Ideal for consolidating up to 25 invoices in one file.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/pdf".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "invoice_ids": invoice_ids, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def export_and_print_invoices( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to specify which organization's invoices to print.", # noqa: E501 + ], + invoice_identifiers: Annotated[ + str, "A comma-separated string of up to 25 invoice IDs to export and print as PDFs." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'bulk_print_invoices'."]: + """Export and print multiple invoices as PDFs. + + Use this tool to export and print up to 25 invoices at a time in PDF format.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/print".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "invoice_ids": invoice_identifiers, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def disable_invoice_payment_reminder( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to specify which organization's invoice reminders are being disabled.", # noqa: E501 + ], + invoice_identifier: Annotated[ + str, "Unique identifier of the invoice to disable payment reminders." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'disable_invoice_payment_reminder'." +]: + """Disable automated payment reminders for an invoice.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/paymentreminder/disable".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def activate_invoice_reminder( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the invoice payment reminder is being activated." + ], + invoice_identifier: Annotated[ + str, "Unique identifier of the invoice for which payment reminders are to be activated." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'enable_invoice_payment_reminder'."]: + """Enable automated payment reminders for invoices. + + Activate automatic reminders for invoice payments to ensure timely settlements.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/paymentreminder/enable".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def write_off_invoice_balance( + context: ToolContext, + organization_id: Annotated[str, "The unique ID of the organization in Zoho Books."], + invoice_identifier: Annotated[str, "The unique identifier for the invoice to be written off."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'write_off_invoice'."]: + """Write off the balance amount of an invoice in Zoho Books. + + Use this tool to write off the remaining balance of an invoice in Zoho Books when the amount is uncollectible.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/writeoff".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def cancel_write_off_invoice( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization in Zoho Books whose invoice write-off is to be canceled." + ], + invoice_unique_identifier: Annotated[ + str, "The unique identifier for the invoice whose write-off is to be canceled." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'cancel_write_off_invoice'."]: + """Cancel the write-off amount of an invoice in Zoho Books. + + Use this tool to revert the write-off process of an invoice in Zoho Books. This action can be performed when an invoice's write-off needs to be canceled, typically to amend financial records or correct a mistake.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/writeoff/cancel".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_unique_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def modify_invoice_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique string ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_identifier: Annotated[ + str | None, + "Unique identifier of the invoice to update the billing address. 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_invoice_billing_address'."]: + """Update the billing address for a specific invoice. + + Use this tool to update the billing address for a particular invoice in Zoho Books. It modifies the address details for a specified invoice. + + 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["MODIFYINVOICEADDRESS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not invoice_identifier: + missing_params.append(("invoice_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["MODIFYINVOICEADDRESS_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["MODIFYINVOICEADDRESS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/address/billing".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["MODIFYINVOICEADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_invoice_shipping_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization in Zoho Books. Required to specify which organization's invoice will be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_unique_identifier: Annotated[ + str | None, + "Unique identifier of the invoice to update the shipping address. 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_invoice_shipping_address'."]: + """Update the shipping address of a specific invoice. + + Use this tool to update the shipping address associated with a specific invoice in Zoho Books. It is used when there's a need to modify the shipping information for an invoice after it has been created. + + 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[ + "UPDATEINVOICESHIPPINGADDRESS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not invoice_unique_identifier: + missing_params.append(("invoice_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINVOICESHIPPINGADDRESS_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["UPDATEINVOICESHIPPINGADDRESS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/address/shipping".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_unique_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINVOICESHIPPINGADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_invoice_templates( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization to fetch invoice templates for."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_invoice_templates'."]: + """Fetch all invoice PDF templates from Zoho Books. + + This tool retrieves a list of all available invoice PDF templates in Zoho Books. Use this to access template options for invoices.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/templates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_invoice_template( + context: ToolContext, + organization_id: Annotated[ + str, "Provide the ID of the organization for which the invoice template is being updated." + ], + invoice_identifier: Annotated[ + str, "Unique identifier for the invoice to update the PDF template." + ], + invoice_template_id: Annotated[ + str, "Unique identifier for the invoice template to be updated." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update_invoice_template'."]: + """Update the PDF template for a specific invoice. + + Use this tool to update the PDF template associated with a particular invoice. This is useful when you need to change the template style or format of an invoice after it has been issued.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/templates/{template_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_identifier, + template_id=invoice_template_id, + ), + method="PUT", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_invoice_payments( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization to retrieve invoice payments for."], + invoice_identifier: Annotated[ + str, "Unique identifier of the invoice to retrieve its payment details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_invoice_payments'."]: + """Retrieve a list of payments for a specific invoice. + + Use this tool to get detailed information about payments made for a specific invoice by providing the invoice ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/payments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_invoice_credits_applied( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to retrieve credits applied to an invoice.", # noqa: E501 + ], + invoice_identifier: Annotated[ + str, "Unique identifier of the invoice for which credits are applied." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_invoice_credits_applied'."]: + """Retrieve the credits applied to a specific invoice. + + Use this tool to obtain a list of all credits that have been applied to a particular invoice. It should be called when detailed invoice credit information is needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/creditsapplied".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def apply_credits_to_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization to identify where credits are applied. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_unique_identifier: Annotated[ + str | None, + "Unique identifier of the invoice to which credits will be applied. 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 'apply_credits_to_invoice'."]: + """Apply customer credits to an invoice. + + This tool applies customer credits, from credit notes or excess payments, to a specified invoice. It can apply multiple credits at once. + + 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[ + "APPLYCREDITSTOINVOICE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not invoice_unique_identifier: + missing_params.append(("invoice_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["APPLYCREDITSTOINVOICE_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["APPLYCREDITSTOINVOICE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/credits".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_unique_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["APPLYCREDITSTOINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_invoice_payment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books to which the payment belongs. This is required to identify the specific organization for deleting the invoice payment.", # noqa: E501 + ], + invoice_identifier: Annotated[ + str, "Unique identifier of the invoice to delete the payment from." + ], + invoice_payment_identifier: Annotated[ + str, "Unique identifier of the invoice payment to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_invoice_payment'."]: + """Delete a payment made to an invoice in Zoho Books. + + Use this tool to remove a payment record from an invoice in Zoho Books when it was entered incorrectly or is no longer needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/payments/{invoice_payment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_identifier, + invoice_payment_id=invoice_payment_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def remove_invoice_credit( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization from which the credit is being removed." + ], + invoice_identifier: Annotated[str, "Unique identifier of the invoice to remove a credit from."], + credit_note_invoice_id: Annotated[ + str, "Unique identifier of the credit note invoice to be removed from the invoice." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_invoice_applied_credit'."]: + """Remove a specific credit applied to an invoice. + + Use this tool to delete a particular credit that has been applied to an invoice when adjustments are needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/creditsapplied/{creditnotes_invoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_identifier, + creditnotes_invoice_id=credit_note_invoice_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_invoice_attachment( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization to retrieve the invoice attachment for." + ], + invoice_identifier: Annotated[ + str, "Unique identifier of the invoice to fetch the attachment from." + ], + get_thumbnail: Annotated[ + bool | None, "Set to true to get the thumbnail of the invoice attachment." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_invoice_attachment'."]: + """Fetch attachment file from a specified invoice. + + Call this tool to retrieve the file attached to a specific invoice using its ID. Useful for accessing documents associated with invoices.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id, "preview": get_thumbnail}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def attach_invoice_file( + context: ToolContext, + organization_identifier: Annotated[ + str, + "ID of the organization for which the invoice attachment is being added. This is required to identify the specific organization within Zoho Books.", # noqa: E501 + ], + invoice_identifier: Annotated[str, "Unique identifier for the invoice to attach the file to."], + file_to_attach: Annotated[ + str | None, "The file to be attached. Allowed extensions: gif, png, jpeg, jpg, bmp, pdf." + ] = None, + send_attachment_in_email: Annotated[ + bool | None, "Set to True to send the attachment with the invoice when emailed." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'add_invoice_attachment'."]: + """Attach a file to a specified invoice. + + Use this tool to attach a file to a specific invoice using its ID. It is useful for adding documents related to the invoice.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_identifier, + "can_send_in_mail": send_attachment_in_email, + "attachment": file_to_attach, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def set_invoice_attachment_preference( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + invoice_identifier: Annotated[ + str, "Unique identifier for the specific invoice to update attachment preference." + ], + send_attachment_with_email: Annotated[ + bool, "Set to true to send the attachment with the invoice when emailed." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update_attachment_preference'."]: + """Set the email attachment preference for an invoice. + + This tool updates whether an attached file should be sent when emailing a specific invoice in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="PUT", + params=remove_none_values({ + "organization_id": organization_id, + "can_send_in_mail": send_attachment_with_email, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_invoice_attachment( + context: ToolContext, + organization_id: Annotated[ + str, + "ID of the organization for which the invoice attachment will be deleted. This is required to authenticate and identify the specific organization on Zoho Books.", # noqa: E501 + ], + invoice_identifier: Annotated[ + str, + "Unique identifier of the invoice to delete the attachment from. Must match the invoice's ID in Zoho Books.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_invoice_attachment'."]: + """Delete the file attached to an invoice. + + This tool should be called to delete an attachment from a specified invoice in Zoho Books. Useful for managing or cleaning up invoice files.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_invoice_document( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization to retrieve the document from."], + invoice_id: Annotated[ + str, + "The unique identifier for the invoice to which the document is attached. Required to retrieve the document.", # noqa: E501 + ], + invoice_document_id: Annotated[ + str, + "Unique identifier for the specific document attached to the invoice. Required to retrieve the exact document.", # noqa: E501 + ], + response_format: Annotated[ + str | None, "Specify the desired format for the response, such as json, pdf, or html." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_invoice_document_details'."]: + """Retrieve a document attached to a specific invoice. + + Use this tool to access and download a document linked to an invoice by specifying the invoice and document IDs.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/documents/{document_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_id, + document_id=invoice_document_id, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "responseformat": response_format, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_invoice_document( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. This is required to specify which organization's invoice document is to be deleted.", # noqa: E501 + ], + invoice_id: Annotated[ + str, + "The unique identifier of the invoice from which the document will be deleted. This ID is required and must be a valid invoice in the system.", # noqa: E501 + ], + invoice_document_id: Annotated[ + str, "The unique ID of the document to be deleted from the invoice." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_invoice_document'."]: + """Delete a document attached to an invoice. + + Permanently removes a document from an invoice in Zoho Books. This tool should be called when there is a need to delete a specific non-system-generated document associated with an invoice.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/documents/{document_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_id, + document_id=invoice_document_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_invoice_expense_receipt( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization from which the expense receipt will be deleted." + ], + expense_identifier: Annotated[str, "Unique identifier of the expense to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_invoice_expense_receipt'."]: + """Delete attached expense receipts from an invoice. + + Use this tool to delete expense receipts that are attached to an invoice, specifically those raised from an expense.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/expenses/{expense_id}/receipt".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), expense_id=expense_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_invoice_custom_fields( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization to which the invoice belongs. This is required to identify the correct organization context for the invoice update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_identifier: Annotated[ + str | None, + "Unique identifier of the invoice to update custom fields. 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_custom_fields_in_invoice'."]: + """Update custom fields in an existing invoice. + + Use this tool to modify the value of custom fields in a specified invoice. It should be called when you need to change or update custom information for invoice records. + + 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[ + "UPDATEINVOICECUSTOMFIELDS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not invoice_identifier: + missing_params.append(("invoice_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINVOICECUSTOMFIELDS_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["UPDATEINVOICECUSTOMFIELDS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoice/{invoice_id}/customfields".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINVOICECUSTOMFIELDS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_invoice_comments( + context: ToolContext, + organization_id: Annotated[ + str, + "ID of the organization for which the invoice comments and history are being retrieved. Must be a unique string identifier.", # noqa: E501 + ], + invoice_identifier: Annotated[ + str, "Unique identifier for the specific invoice to retrieve comments and history." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_invoice_comments'."]: + """Get comments and history of an invoice. + + Use this tool to retrieve the full history and all comments associated with a specific invoice.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_invoice_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization for which the invoice belongs. It must be a valid and existing organization ID. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_identifier: Annotated[ + str | None, + "Unique identifier of the invoice to add a comment to. 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_invoice_comment'."]: + """Add a comment to a specific invoice. + + Use this tool to add a comment to an invoice by specifying the invoice ID. Useful for internal notes or communication related to invoice handling. + + 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["ADDINVOICECOMMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not invoice_identifier: + missing_params.append(("invoice_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDINVOICECOMMENT_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["ADDINVOICECOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), invoice_id=invoice_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDINVOICECOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_invoice_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "ID of the organization for which the invoice comment needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_unique_id: Annotated[ + str | None, + "Unique identifier for the invoice to update its comment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + comment_id: Annotated[ + str | None, + "Unique identifier of the comment to be updated. 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_invoice_comment'."]: + """Update an existing comment on an invoice. + + Use this tool to update a specific comment on an invoice by providing the invoice and comment IDs. + + 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["UPDATEINVOICECOMMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not invoice_unique_id: + missing_params.append(("invoice_unique_id", "path")) + if not comment_id: + missing_params.append(("comment_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINVOICECOMMENT_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["UPDATEINVOICECOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_unique_id, + comment_id=comment_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINVOICECOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_invoice_comment( + context: ToolContext, + organization_id: Annotated[str, "Identifier for the organization in Zoho Books."], + invoice_identifier: Annotated[ + str, "Unique identifier of the invoice to delete the comment from." + ], + comment_unique_identifier: Annotated[ + str, "The unique identifier for the comment to be deleted from the invoice." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_invoice_comment'."]: + """Delete a specific comment from an invoice. + + Use this tool to remove a comment from an invoice in Zoho Books. It is useful when a comment is no longer relevant or was added by mistake.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/invoices/{invoice_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + invoice_id=invoice_identifier, + comment_id=comment_unique_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.ALL"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def generate_invoice_payment_link( + context: ToolContext, + organization_identifier: Annotated[str, "Specify the organization's unique ID."], + invoice_transaction_id: Annotated[ + str, "The unique ID of the transaction or invoice for which the payment link is generated." + ], + transaction_type: Annotated[str, "Specifies the type of transaction, typically 'Invoice'."], + link_type: Annotated[str, "Specifies whether the payment link is Private or Public."], + payment_link_expiry_date: Annotated[ + str, "The date when the payment link should expire. Use format: yyyy-MM-dd." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'generate_invoice_payment_link'."]: + """Generate a payment link for an invoice with expiry. + + Use this tool to generate a unique payment link for a specified invoice, including setting an expiry date for the link.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/share/paymentlink".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "transaction_id": invoice_transaction_id, + "transaction_type": transaction_type, + "link_type": link_type, + "expiry_time": payment_link_expiry_date, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_new_zoho_item( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. 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 'create_item'."]: + """Create a new item in Zoho Books inventory. + + Use this tool to create a new item in Zoho Books. This is useful for adding products or services to your Zoho inventory for tracking purposes. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATENEWZOHOITEM_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATENEWZOHOITEM_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["CREATENEWZOHOITEM_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/items".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATENEWZOHOITEM_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_active_inventory_items( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization to fetch items from." + ], + item_name_search: Annotated[ + str | None, + "Search for items by name using prefixes 'name_startswith' or 'name_contains'. Maximum length is 100 characters.", # noqa: E501 + ] = None, + description_filter: Annotated[ + str | None, + "Search items by description. Use keywords or phrases up to 100 characters. Prefix with 'description_startswith' or 'description_contains' for specific filtering.", # noqa: E501 + ] = None, + search_by_rate_criteria: Annotated[ + str | None, "Specify rate conditions to filter items. Use format like 'rate_less_than:100'." + ] = None, + search_by_tax_id: Annotated[ + str | None, "Search for items using the tax ID as a filter." + ] = None, + tax_name_filter: Annotated[str | None, "Filter items by their tax name."] = None, + tax_exemption_identifier: Annotated[ + str | None, "ID for the tax exemption. Required if is_taxable is false." + ] = None, + associated_account_id: Annotated[ + str | None, "ID of the account to associate the item with." + ] = None, + filter_items_by_status: Annotated[ + str | None, + "Filter items by status. Allowed values are 'Status.All', 'Status.Active', and 'Status.Inactive'.", # noqa: E501 + ] = None, + search_items_by_text: Annotated[ + str | None, "Search for items by name or description, up to 100 characters." + ] = None, + sort_items_by: Annotated[ + str | None, + "Specify the attribute to sort items by. Allowed values: 'name', 'rate', 'tax_name'.", + ] = None, + sat_item_key_code: Annotated[ + str | None, + "SAT Item key code used to filter items. Provide a valid string key code for lookup.", + ] = None, + sat_unit_code: Annotated[ + str | None, + "SAT Unit code for specific inventory items. Used to search or filter items based on their unit code.", # noqa: E501 + ] = None, + page_number_to_fetch: Annotated[ + int | None, + "The page number of active items to retrieve, with a default of 1 if unspecified.", + ] = 1, + records_per_page: Annotated[ + int | None, "Specify the number of records to fetch per page. Default is 200." + ] = 200, + is_item_taxable: Annotated[ + bool | None, "Boolean indicating if the item is taxable. True means the item is taxable." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_items'."]: + """Retrieve a paginated list of all active inventory items. + + Use this tool to fetch a list of all active items from the inventory. It provides the data with pagination to manage large sets of items efficiently.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/items".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "name": item_name_search, + "description": description_filter, + "rate": search_by_rate_criteria, + "tax_id": search_by_tax_id, + "tax_name": tax_name_filter, + "is_taxable": is_item_taxable, + "tax_exemption_id": tax_exemption_identifier, + "account_id": associated_account_id, + "filter_by": filter_items_by_status, + "search_text": search_items_by_text, + "sort_column": sort_items_by, + "sat_item_key_code": sat_item_key_code, + "unitkey_code": sat_unit_code, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_item_via_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. This ID is used to specify which organization's data you are trying to access or modify. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_api_name: Annotated[ + str | None, + "The API name of the unique custom field used for identifying the item. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "The unique value of the custom field used to identify or create an item in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_item_if_not_found: Annotated[ + bool | None, + "Set to true to create a new item if no item matches the unique custom field value. 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_item_using_custom_field'."]: + """Update or create an item using a unique custom field. + + Use this tool to update an existing item or create a new one based on a unique custom field value in Zoho Books. If the custom field value matches, the item is updated; otherwise, a new item is created if allowed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEITEMVIACUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEITEMVIACUSTOMFIELD_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["UPDATEITEMVIACUSTOMFIELD_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/items".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEITEMVIACUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": create_item_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_zoho_item_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization in Zoho Books for which the item details are to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + item_identifier: Annotated[ + str | None, + "Unique identifier of the item to be updated in Zoho Books. 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_item'."]: + """Update the details of an item in Zoho Books. + + Use this tool to update item details in Zoho Books by providing the item ID and the new information to be updated. + + 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[ + "UPDATEZOHOITEMDETAILS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not item_identifier: + missing_params.append(("item_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEZOHOITEMDETAILS_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["UPDATEZOHOITEMDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/items/{item_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), item_id=item_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEZOHOITEMDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_item_details( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization whose item details are being retrieved." + ], + item_unique_identifier: Annotated[ + str, "Unique identifier for the item to retrieve details from Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_item'."]: + """Retrieve details of a specific item in Zoho Books. + + Use this tool to get detailed information about a specific item in Zoho Books by providing the item ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/items/{item_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), item_id=item_unique_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_item_in_zoho_books( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization in Zoho Books from which you wish to delete the item." + ], + item_identifier: Annotated[str, "Unique identifier of the item to be deleted from Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_item'."]: + """Delete an item from Zoho Books. + + This tool deletes an item from Zoho Books. It should be called to remove items that are no longer needed, provided they are not part of any transaction.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/items/{item_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), item_id=item_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_item_custom_fields( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization associated with the item. This is required to specify which organization's item custom fields should be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + item_identifier: Annotated[ + str | None, + "Provide the unique identifier for the item to update its custom fields. 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_custom_fields_in_item'."]: + """Updates custom fields in an existing item. + + Use this tool to update the value of custom fields in existing items. Call it when you need to modify specific custom field information for an item record in Zoho Books. + + 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[ + "UPDATEITEMCUSTOMFIELDS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not item_identifier: + missing_params.append(("item_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEITEMCUSTOMFIELDS_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["UPDATEITEMCUSTOMFIELDS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/item/{item_id}/customfields".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), item_id=item_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEITEMCUSTOMFIELDS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def activate_inactive_item( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for your organization in Zoho Books. Required to activate an item.", + ], + item_identifier: Annotated[str, "Unique identifier of the item to be activated in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_item_active'."]: + """Activate an inactive item in Zoho Books. + + Use this tool to reactivate an item that has been previously marked as inactive in Zoho Books. It should be called when you need to make an item available again for transactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/items/{item_id}/active".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), item_id=item_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_item_inactive( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. Required for specifying which organization's item to mark as inactive.", # noqa: E501 + ], + item_identifier: Annotated[str, "Unique identifier of the item to be marked inactive."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_item_inactive'."]: + """Mark an item as inactive in Zoho Books. + + Use this tool to mark an active item as inactive in Zoho Books. Useful for managing inventory and item status.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/items/{item_id}/inactive".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), item_id=item_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_journal_entry( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books. 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 'create_journal'."]: + """Create a journal entry in Zoho Books. + + Use this tool to add a new journal entry in Zoho Books. It should be called when there's a need to record financial transactions manually. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEJOURNALENTRY_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEJOURNALENTRY_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["CREATEJOURNALENTRY_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/journals".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEJOURNALENTRY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_journal_list( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization to retrieve journals for." + ], + journal_entry_number: Annotated[ + str | None, + "Search journals by journal entry number using exact match or variants like 'entry_number_startswith' and 'entry_number_contains'.", # noqa: E501 + ] = None, + search_by_reference_number: Annotated[ + str | None, + "Search journals by reference number. Use 'startswith:' or 'contains:' for filtering options.", # noqa: E501 + ] = None, + journal_date_search: Annotated[ + str | None, + "Specify date criteria to search journals. Use date_start, date_end, date_before, or date_after.", # noqa: E501 + ] = None, + search_journal_notes: Annotated[ + str | None, + "Search journals by their associated notes. Options: 'startswith' or 'contains'.", + ] = None, + search_by_last_modified_time: Annotated[ + str | None, + "Search for journals using the last modified time as a filter criterion. Provide a valid timestamp to filter entries updated after that time.", # noqa: E501 + ] = None, + journal_total_filter: Annotated[ + float | None, + "Filter journals based on total amount using keys like total_less_than or total_greater_equals.", # noqa: E501 + ] = None, + search_by_customer_id: Annotated[ + int | None, "Use a specific Customer ID to search for journals in Zoho Books." + ] = None, + vendor_id: Annotated[ + int | None, "Specify the Vendor ID to search journals associated with that vendor." + ] = None, + filter_journals_by_date: Annotated[ + str | None, + "Specify the time period to filter journals by date. Options: JournalDate.All, JournalDate.Today, JournalDate.ThisWeek, JournalDate.ThisMonth, JournalDate.ThisQuarter, JournalDate.ThisYear.", # noqa: E501 + ] = None, + sorting_column_for_journals: Annotated[ + str | None, + "Specify the field to sort journals by. Options: 'journal_date', 'entry_number', 'reference_number', 'total'.", # noqa: E501 + ] = None, + page_number_to_fetch: Annotated[ + int | None, "Page number of the journal list to retrieve. Default value is 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of journal records to be fetched per page. Default value is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_journals'."]: + """Retrieve a list of accounting journals. + + Use this tool to get a list of accounting journals. It's useful for accessing journal entries in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/journals".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "entry_number": journal_entry_number, + "reference_number": search_by_reference_number, + "date": journal_date_search, + "notes": search_journal_notes, + "last_modified_time": search_by_last_modified_time, + "total": journal_total_filter, + "customer_id": search_by_customer_id, + "vendor_id": vendor_id, + "filter_by": filter_journals_by_date, + "sort_column": sorting_column_for_journals, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_journal_in_zoho_books( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books. Required for identifying which organization's journal entry to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + journal_identifier: Annotated[ + str | None, + "The unique identifier for the journal entry to be updated in Zoho Books. 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_journal'."]: + """Updates a journal entry in Zoho Books with specified details. + + This tool updates an existing journal entry in Zoho Books using the provided details. It should be called when a user needs to modify a journal entry in their Zoho Books account. + + 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[ + "UPDATEJOURNALINZOHOBOOKS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not journal_identifier: + missing_params.append(("journal_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEJOURNALINZOHOBOOKS_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["UPDATEJOURNALINZOHOBOOKS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/journals/{journal_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), journal_id=journal_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEJOURNALINZOHOBOOKS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_journal_details( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization in Zoho Books required to retrieve journal details." + ], + journal_unique_id: Annotated[ + str, "The unique identifier for the journal to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_journal'."]: + """Retrieve the details of a specific journal entry in Zoho Books. + + This tool retrieves information about a specific journal entry from Zoho Books, using the journal ID. It should be called when details of a journal entry are needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/journals/{journal_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), journal_id=journal_unique_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_journal_entry( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization associated with the journal to be deleted." + ], + journal_entry_id: Annotated[str, "The unique identifier for the journal entry to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_journal'."]: + """Delete a specific journal entry by ID. + + This tool deletes a journal entry in Zoho Books when provided with the specific journal ID. Use this to remove incorrect or unnecessary journal records.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/journals/{journal_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), journal_id=journal_entry_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def publish_draft_journal( + context: ToolContext, + organization_id: Annotated[ + str, + "The ID of the organization in Zoho Books. Required to identify the organization where the journal resides.", # noqa: E501 + ], + journal_identifier: Annotated[ + str, "Unique identifier of the journal to be marked as published." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_journal_published'."]: + """Mark a draft journal as published in Zoho Books. + + Use this tool to change the status of a draft journal entry to published within Zoho Books. This can be helpful when a draft is ready for final publication.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/journals/{journal_id}/status/publish".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), journal_id=journal_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def attach_file_to_journal( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization where the file will be attached. This is used to specify the target organization in Zoho Books.", # noqa: E501 + ], + journal_unique_identifier: Annotated[ + str, + "Provide the unique identifier for the specific journal entry to which the file will be attached.", # noqa: E501 + ], + attachment_file_path: Annotated[ + str | None, "The path to the file that will be attached to the journal in Zoho Books." + ] = None, + document_to_attach: Annotated[ + str | None, "The document or file to be attached to the journal entry in Zoho Books." + ] = None, + total_number_of_files: Annotated[ + int | None, + "Specify the total number of files to be attached to the journal. Ensure this matches the actual number of attachments.", # noqa: E501 + ] = None, + document_identifiers: Annotated[ + str | None, + "A string of document IDs that need to be attached. These IDs should be associated with the documents intended for attachment.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'add_journal_attachment'."]: + """Attach a file to a Zoho Books journal entry. + + This tool is used to attach a file to a specific journal entry in Zoho Books. Use it when you need to upload and associate documents or files with journal entries for record-keeping or documentation purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/journals/{journal_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + journal_id=journal_unique_identifier, + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_id, + "attachment": attachment_file_path, + "doc": document_to_attach, + "totalFiles": total_number_of_files, + "document_ids": document_identifiers, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_journal_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization in Zoho Books where the comment is to be added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + journal_unique_id: Annotated[ + str | None, + "The unique identifier for the journal entry to which the comment 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_journal_comment'."]: + """Add a comment to a journal entry in Zoho Books. + + This tool adds a comment to a specified journal entry in Zoho Books. Call this tool when you need to annotate or provide additional information for a journal entry. + + 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["ADDJOURNALCOMMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not journal_unique_id: + missing_params.append(("journal_unique_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDJOURNALCOMMENT_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["ADDJOURNALCOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/journals/{journal_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), journal_id=journal_unique_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDJOURNALCOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.accountants.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_journal_comment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to specify which organization's journal comment should be deleted.", # noqa: E501 + ], + journal_unique_id: Annotated[ + str, "Unique identifier of the journal for which the comment will be deleted." + ], + comment_id: Annotated[str, "Unique identifier of the comment to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_journal_comment'."]: + """Delete a journal comment in Zoho Books. + + Use this tool to delete a specific comment from a journal entry in Zoho Books. It should be called when you need to remove unwanted or incorrect comments from a journal.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/journals/{journal_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + journal_id=journal_unique_id, + comment_id=comment_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def enable_organization_locations( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier of the organization for which to enable location tracking." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'enable_locations'."]: + """Enable locations for an organization in Zoho Books. + + Use this tool to enable location settings for an organization in Zoho Books, allowing tracking and management of different locations within the company's account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/locations/enable".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_zoho_book_location( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the location is being created in Zoho Books. 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 'create_location'."]: + """Create a new location in Zoho Books. + + Use this tool to create a new business location within Zoho Books. It handles the setup of location data, allowing integration of new physical or digital locations into the Zoho Books system. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEZOHOBOOKLOCATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEZOHOBOOKLOCATION_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["CREATEZOHOBOOKLOCATION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/locations".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEZOHOBOOKLOCATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_inventory_locations( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_locations'."]: + """Retrieve all available locations from Zoho Inventory. + + Use this tool to get a comprehensive list of all the available locations in your Zoho Inventory. It should be called when you need to access inventory location details.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/locations".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_location_in_zoho_books( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization in Zoho Books. It is required to identify which organization's location is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + location_identifier: Annotated[ + str | None, + "Unique identifier of the location to be updated. 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_location'."]: + """Update location details in Zoho Books. + + Use this tool to update location details in Zoho Books by specifying the location ID. + + 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[ + "UPDATELOCATIONINZOHOBOOKS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not location_identifier: + missing_params.append(("location_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATELOCATIONINZOHOBOOKS_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["UPDATELOCATIONINZOHOBOOKS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/locations/{location_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), location_id=location_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATELOCATIONINZOHOBOOKS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_location( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization to which the location belongs." + ], + location_id: Annotated[str, "The unique identifier of the location to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_location'."]: + """Delete a location from the system. + + Use this tool to remove a location by specifying its unique identifier in the system.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/locations/{location_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), location_id=location_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def activate_location( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization to which the location belongs."], + location_identifier: Annotated[ + str, "Unique identifier for the location to be marked as active." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_location_active'."]: + """Marks a location as active. + + Use this tool to mark a specified location as active in the system. This is useful for enabling locations that were previously inactive.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/locations/{location_id}/active".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), location_id=location_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_location_inactive( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization in Zoho Books to mark the location as inactive." + ], + location_identifier: Annotated[ + str, "Unique identifier of the location to be marked as inactive in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_location_inactive'."]: + """Marks a specific location as inactive in Zoho Books. + + Use this tool to set a location's status to inactive within Zoho Books. This is helpful for managing locations that are no longer in use.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/locations/{location_id}/inactive".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), location_id=location_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def set_primary_location( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization for which to set the primary location in Zoho Books." + ], + location_identifier: Annotated[ + str, "Unique identifier of the location to be marked as primary." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_location_primary'."]: + """Marks a specified location as primary in Zoho Books. + + Use this tool to designate a specific location as the primary one in Zoho Books. This is useful for managing location preferences and ensuring the correct primary location is set.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/locations/{location_id}/markasprimary".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), location_id=location_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_opening_balance( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the opening balance is being created. This ID is required to specify the target organization in Zoho Books. 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 'create_opening_balance'."]: + """Creates an opening balance for accounts. + + Use this tool to create an opening balance with specified account information in Zoho Books. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEOPENINGBALANCE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEOPENINGBALANCE_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["CREATEOPENINGBALANCE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/openingbalances".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEOPENINGBALANCE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_opening_balance( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Required for updating the opening balance information. 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_opening_balance'."]: + """Update the existing opening balance information. + + This tool is used to update the existing opening balance information in Zoho Books. It should be called when there is a need to modify or correct the initial financial figures recorded in the system. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEOPENINGBALANCE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEOPENINGBALANCE_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["UPDATEOPENINGBALANCE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/openingbalances".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEOPENINGBALANCE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_opening_balance( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization to retrieve the opening balance for."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_opening_balance'."]: + """Retrieves the opening balance for accounts.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/openingbalances".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_opening_balance( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization whose opening balance is to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_opening_balance'."]: + """Delete the entered opening balance in Zoho Books. + + Use this tool to remove the existing opening balance from Zoho Books settings when adjustments or corrections are needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/openingbalances".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_organization_in_zoho_books( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization to be created in Zoho Books. 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 'create_organization'."]: + """Create a new organization in Zoho Books. + + Use this tool to create a new organization in the Zoho Books platform. It is called when there's a need to add organizational details to Zoho Books. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEORGANIZATIONINZOHOBOOKS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEORGANIZATIONINZOHOBOOKS_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["CREATEORGANIZATIONINZOHOBOOKS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/organizations".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEORGANIZATIONINZOHOBOOKS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_organizations( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization to list details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_organizations'."]: + """Retrieve the list of organizations from Zoho Books. + + Use this tool to obtain a list of all organizations associated with the user's Zoho Books account. It is useful for managing and accessing organization-specific data or settings.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/organizations".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_organization_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Unique identifier of the organization to update in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + organization_identifier: Annotated[ + str | None, + "The unique string identifier for the organization to be updated. 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_organization'."]: + """Update an organization's details in Zoho Books. + + This tool updates the details of an organization in Zoho Books. It should be called when you need to modify existing information about a specific organization. + + 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[ + "UPDATEORGANIZATIONDETAILS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEORGANIZATIONDETAILS_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["UPDATEORGANIZATIONDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/organizations/{organization_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + organization_id=organization_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEORGANIZATIONDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_organization_details( + context: ToolContext, + organization_id: Annotated[ + str, + "Unique identifier for the organization in Zoho Books. Used to retrieve specific organization details.", # noqa: E501 + ], + org_id: Annotated[str, "Unique identifier for the specific organization."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_organization'."]: + """Retrieve details of an organization from Zoho Books. + + Use this tool to get comprehensive details about a specific organization in Zoho Books by providing the organization ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/organizations/{organization_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), organization_id=org_id + ), + method="GET", + params=remove_none_values({"organization_id": org_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_project( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Unique identifier for the organization in Zoho Books. Required for project creation. 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 'create_project'."]: + """Create a new project in Zoho Books. + + This tool facilitates the creation of a new project within Zoho Books. It should be called when there's a need to start a new project and integrate it into the Zoho Books system. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEPROJECT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEPROJECT_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["CREATEPROJECT_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEPROJECT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_projects( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization for which to list projects."], + filter_projects_by_status: Annotated[ + str | None, "Filter projects by status. Use Status.All, Status.Active, or Status.Inactive." + ] = None, + search_by_customer_id: Annotated[ + str | None, "Search projects using the customer's ID to filter results." + ] = None, + sort_projects_by: Annotated[ + str | None, "Sort projects by project name, customer name, rate, or created time." + ] = None, + page_number: Annotated[ + int | None, "Specify the page number to retrieve. Defaults to 1 if not specified." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to fetch per page. Defaults to 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_projects'."]: + """Retrieve a list of all projects with pagination. + + This tool is used to get a list of all projects from Zoho Books, with support for pagination. Call this tool to retrieve project data when managing tasks or resources.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "filter_by": filter_projects_by_status, + "customer_id": search_by_customer_id, + "sort_column": sort_projects_by, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_project_with_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "A string representing the organization's ID required to update or create a project using the custom field. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_api_name: Annotated[ + str | None, + "The API name of the unique custom field used to identify the project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "The unique value for the custom field used to identify or create a project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_new_project_if_not_found: Annotated[ + bool | None, + "Set to true to create a new project if no existing project matches the unique custom field value. 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_projects_using_custom_field'." +]: + """Update or create projects using a unique custom field. + + This tool updates an existing project or creates a new one if no match is found, using a unique custom field value in Zoho Books. Utilize it when you need to modify projects with specific identifiers. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEPROJECTWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPROJECTWITHCUSTOMFIELD_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["UPDATEPROJECTWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPROJECTWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": create_new_project_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_project_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization within Zoho Books, required to identify the organization whose project is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + project_unique_identifier: Annotated[ + str | None, + "Unique identifier of the project to be updated in Zoho Books. 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_project'."]: + """Update details of a project in Zoho Books. + + This tool is called to update the details of a specific project within Zoho Books. It should be used when you need to modify project information such as its name, status, or any other attributes. + + 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["UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not project_unique_identifier: + missing_params.append(("project_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/{project_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_unique_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_project_details( + context: ToolContext, + organization_identifier: Annotated[str, "ID of the organization to retrieve project details."], + project_unique_identifier: Annotated[ + str, "Unique identifier for the project to retrieve detailed information." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_project'."]: + """Retrieve detailed information of a specific project by ID. + + Call this tool to fetch details about a specific project using its ID. Useful for obtaining comprehensive project information.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_unique_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_project( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID of the organization in Zoho Books. Required to identify the organization from which the project will be deleted.", # noqa: E501 + ], + project_id: Annotated[str, "Unique identifier of the project to be deleted in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_project'."]: + """Deletes an existing project in Zoho Books. + + Call this tool to delete an existing project in Zoho Books using the project ID. It confirms the deletion of the specified project.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), project_id=project_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def activate_project( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization in which the project is to be activated." + ], + project_identifier: Annotated[ + str, "Unique identifier for the project to activate in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_project_active'."]: + """Activate a project in Zoho Books. + + This tool marks a specified project as active in Zoho Books. Call this tool when you need to change the status of a project to active to enable its functionalities or integrations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/active".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), project_id=project_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def deactivate_project( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books. Required for identifying the organization for the project update.", # noqa: E501 + ], + project_id: Annotated[str, "The unique identifier of the project to be marked as inactive."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_project_inactive'."]: + """Deactivate a project in Zoho Books. + + Use this tool to mark a project as inactive in Zoho Books when it is no longer active or needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/inactive".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), project_id=project_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def clone_project( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + project_unique_identifier: Annotated[ + str | None, + "Unique string identifier of the project to be cloned. 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 'clone_project'."]: + """Clone an existing project in Zoho Books. + + Use this tool to create a copy of an existing project in Zoho Books. It's useful for duplicating project setups with similar parameters or settings. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CLONEPROJECT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not project_unique_identifier: + missing_params.append(("project_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CLONEPROJECT_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["CLONEPROJECT_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/{project_id}/clone".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_unique_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CLONEPROJECT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def assign_users_to_project( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Unique ID of the organization in Zoho Books for which users are being assigned to a project. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + project_identifier: Annotated[ + str | None, + "The unique identifier for the project to which users will be assigned. 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_project_user'."]: + """Assign users to a specific project in Zoho Books. + + Use this tool to assign multiple users to a project in Zoho Books when managing project teams or updating project participation. + + 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["ASSIGNUSERSTOPROJECT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not project_identifier: + missing_params.append(("project_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ASSIGNUSERSTOPROJECT_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["ASSIGNUSERSTOPROJECT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/{project_id}/users".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), project_id=project_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ASSIGNUSERSTOPROJECT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_project_users( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID representing the organization in Zoho Books. Required to access project users.", # noqa: E501 + ], + project_identifier: Annotated[ + str, "Unique identifier for the project to retrieve associated users." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_project_users'."]: + """Get a list of users associated with a project. + + Use this tool to retrieve users linked to a specific project in Zoho Books. This is useful for managing project collaborations and assignments.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/users".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), project_id=project_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def invite_user_to_project( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization in Zoho Books where the project is located. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + project_unique_identifier: Annotated[ + str | None, + "Unique identifier of the project in Zoho Books. 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 'invite_project_user'."]: + """Invite a user to a project in Zoho Books. + + Use this tool to send an invitation to a user to join a specific project in Zoho Books. This is helpful when you need to collaborate with others by adding them to project teams. + + 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["INVITEUSERTOPROJECT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not project_unique_identifier: + missing_params.append(("project_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["INVITEUSERTOPROJECT_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["INVITEUSERTOPROJECT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/{project_id}/users/invite".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_unique_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["INVITEUSERTOPROJECT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_project_user_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Required to update the user's project details. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + project_identifier: Annotated[ + str | None, + "Unique identifier for the project in Zoho Books. Required to specify which project's user details are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + user_identifier: Annotated[ + str | None, + "Unique identifier for the user to be updated within the project. 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_project_user'."]: + """Update user details in a specific project. + + Use this tool to update details of a user within a specified project in Zoho Books. It confirms the changes made to the user's information. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEPROJECTUSERDETAILS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not project_identifier: + missing_params.append(("project_identifier", "path")) + if not user_identifier: + missing_params.append(("user_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPROJECTUSERDETAILS_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["UPDATEPROJECTUSERDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/{project_id}/users/{user_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_identifier, + user_id=user_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPROJECTUSERDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_project_user_details( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. This is required to fetch the user details associated with the specified project.", # noqa: E501 + ], + project_identifier: Annotated[ + str, "The unique identifier for the project in Zoho Books to fetch user details from." + ], + user_identifier: Annotated[ + str, + "Unique identifier of the user within the project. Required to fetch user-specific details.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_project_user'."]: + """Fetch details of a user within a project in Zoho Books. + + Use this tool to obtain information about a specific user's involvement in a particular project in Zoho Books. It is ideal for checking user roles or assignments within a project.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/users/{user_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_identifier, + user_id=user_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def remove_user_from_project( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization within Zoho Books." + ], + project_identifier: Annotated[ + str, "The unique identifier for the project from which the user will be removed." + ], + user_identifier: Annotated[ + str, "Unique identifier of the user to be removed from the project." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_project_user'."]: + """Remove a user from a specific project in Zoho Books. + + This tool is used to remove a user from a project within Zoho Books. Call this tool when you need to manage project participants by deleting a user's access to a particular project.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/users/{user_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_identifier, + user_id=user_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def post_project_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique identifier of the organization for which the comment is being posted. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + project_unique_identifier: Annotated[ + str | None, + "Unique identifier for the project in Zoho Books. Required to specify the target project for adding a comment. 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_project_comment'."]: + """Post a comment to a specified project. + + This tool posts a comment to a specific project in Zoho Books. Use it when you need to add a comment or note to a project for tracking or communication purposes. + + 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["POSTPROJECTCOMMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not project_unique_identifier: + missing_params.append(("project_unique_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["POSTPROJECTCOMMENT_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["POSTPROJECTCOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/{project_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_unique_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["POSTPROJECTCOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_project_comments( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization to fetch project comments for." + ], + project_identifier: Annotated[str, "Unique identifier of the project to fetch comments for."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_project_comments'."]: + """Retrieve comments for a specified project. + + Use this tool to get detailed comments for a specified project by providing the project ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), project_id=project_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_project_comment( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the comment is to be deleted." + ], + project_identifier: Annotated[ + str, "Unique identifier of the project to delete the comment from." + ], + comment_unique_identifier: Annotated[str, "Unique identifier for the comment to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_project_comment'."]: + """Delete a specific comment from a project. + + Use this tool to delete a comment from a specified project. Useful when you need to remove unwanted or outdated comments from project discussions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_identifier, + comment_id=comment_unique_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_project_invoices( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. This is required to access the specific organization's project invoices.", # noqa: E501 + ], + project_unique_identifier: Annotated[ + str, "Unique identifier for the specific project to retrieve invoices for." + ], + sort_invoices_by: Annotated[ + str | None, + "Specify the column to sort invoices by. Options are: 'invoice_number', 'date', 'total', 'balance', 'created_time'.", # noqa: E501 + ] = None, + page_number_to_fetch: Annotated[ + int | None, "Specify the page number to retrieve from the list of invoices. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, + "The number of invoice records to fetch per page. Defaults to 200 if not specified.", + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_project_invoices'."]: + """Retrieve invoices for a specific project in Zoho Books. + + Call this endpoint to obtain a list of all invoices associated with a particular project within Zoho Books. This tool is useful when you need to review or manage billing details for project-based work.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/invoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_unique_identifier, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "sort_column": sort_invoices_by, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_vendor_purchase_order( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books for which the purchase order is being created. Required to specify the target organization. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + file_attachment: Annotated[ + str | None, + "File path or URL to attach. Allowed extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to disable automatic purchase order number generation, requiring a manual number. 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 'create_purchase_order'."]: + """Generate a purchase order for a vendor. + + Use this tool to create a purchase order for a vendor in Zoho Books. It facilitates procurement by initiating an order with specified vendor details. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEVENDORPURCHASEORDER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEVENDORPURCHASEORDER_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["CREATEVENDORPURCHASEORDER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/purchaseorders".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEVENDORPURCHASEORDER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "attachment": file_attachment, + "ignore_auto_number_generation": ignore_auto_number_generation, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_purchase_orders( + context: ToolContext, + organization_id: Annotated[str, "The unique ID of the organization to filter purchase orders."], + search_by_purchaseorder_number: Annotated[ + str | None, + "Search purchase order by number. Supports exact, starts with, and contains variants.", + ] = None, + reference_number_search: Annotated[ + str | None, + "Search for a purchase order using the exact or partial reference number. Supports 'startswith' and 'contains' methods.", # noqa: E501 + ] = None, + creation_date: Annotated[ + str | None, "Creation date for purchase order search in YYYY-MM-DD format." + ] = None, + purchase_order_status: Annotated[ + str | None, "Filter purchase orders by status. Options: draft, open, billed, cancelled." + ] = None, + search_by_item_description: Annotated[ + str | None, + "Search purchase orders by item description. Use partial matches or specific description. Includes variants like 'startswith' and 'contains'.", # noqa: E501 + ] = None, + vendor_name: Annotated[ + str | None, + "Search purchase orders by vendor name with optional 'startswith' or 'contains' variants.", + ] = None, + total_amount_filter: Annotated[ + float | None, + "Filter purchase orders by total amount. Use options like 'start', 'end', 'less_than', 'less_equals', 'greater_than', 'greater_equals' to specify the range or comparison.", # noqa: E501 + ] = None, + vendor_identifier: Annotated[ + str | None, + "Specify the unique ID of the vendor to filter purchase orders. Useful for grouping POs by a specific vendor.", # noqa: E501 + ] = None, + search_by_last_modified_time: Annotated[ + str | None, + "ISO 8601 format (YYYY-MM-DDTHH:MM:SS±HH:MM) to filter POs by last modified time. For finding recently updated POs.", # noqa: E501 + ] = None, + search_by_item_id: Annotated[ + str | None, + "Search purchase orders using the unique item ID to find POs containing a specific item.", + ] = None, + status_filter: Annotated[ + str | None, + "Filter purchase orders by status. Use 'Status.All', 'Status.Draft', 'Status.Open', 'Status.Billed', or 'Status.Cancelled'.", # noqa: E501 + ] = None, + search_purchase_order_text: Annotated[ + str | None, + "Search for purchase orders by number, reference, or vendor name. Allows general searching across multiple fields for quick lookup.", # noqa: E501 + ] = None, + sort_by_column: Annotated[ + str | None, + "Column to sort purchase orders by. Options: vendor_name, purchaseorder_number, date, delivery_date, total, created_time.", # noqa: E501 + ] = None, + search_by_custom_field: Annotated[ + str | None, + "Search purchase orders using custom field criteria. Supports 'startswith' and 'contains' variants.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, "Specify the page number to fetch, with a default value of 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Specifies the number of purchase orders to retrieve per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_purchase_orders'."]: + """Retrieve a list of all purchase orders.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "purchaseorder_number": search_by_purchaseorder_number, + "reference_number": reference_number_search, + "date": creation_date, + "status": purchase_order_status, + "item_description": search_by_item_description, + "vendor_name": vendor_name, + "total": total_amount_filter, + "vendor_id": vendor_identifier, + "last_modified_time": search_by_last_modified_time, + "item_id": search_by_item_id, + "filter_by": status_filter, + "search_text": search_purchase_order_text, + "sort_column": sort_by_column, + "custom_field": search_by_custom_field, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_purchase_order_by_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. This is required to specify which organization's purchase order needs to be updated or created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_api_name: Annotated[ + str | None, + "The API name of the unique custom field used to update or identify the purchase order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "Unique value for the custom field to retrieve and update the purchase order. This should match the specific custom field value used to identify the order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_new_order_if_not_found: Annotated[ + bool | None, + "Set to true to create a new purchase order if no existing order matches the unique custom field value. 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_purchase_order_using_custom_field'." +]: + """Update or create a purchase order via custom field value. + + Use this tool to update an existing purchase order or create a new one if needed, based on a unique custom field value. It should be called when you need to modify a purchase order by using a custom field's unique identifier. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEPURCHASEORDERBYCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPURCHASEORDERBYCUSTOMFIELD_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["UPDATEPURCHASEORDERBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/purchaseorders".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPURCHASEORDERBYCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": create_new_order_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_purchase_order( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization for which the purchase order is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + purchase_order_identifier: Annotated[ + str | None, + "Unique identifier for the specific purchase order to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + attachment_file_path: Annotated[ + str | None, + "File path of the attachment with extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "If true, ignore automatic purchase order number generation and manually specify the order number. 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_purchase_order'."]: + """Update an existing purchase order in Zoho Books. + + Use this tool to update details of a specific purchase order in Zoho Books. It should be called when changes to a purchase order need to be made. + + 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["UPDATEPURCHASEORDER_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not purchase_order_identifier: + missing_params.append(("purchase_order_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPURCHASEORDER_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["UPDATEPURCHASEORDER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/purchaseorders/{purchase_order_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchase_order_id=purchase_order_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPURCHASEORDER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "attachment": attachment_file_path, + "ignore_auto_number_generation": ignore_auto_number_generation, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_purchase_order_details( + context: ToolContext, + organization_identifier: Annotated[ + str, "Unique ID of the organization to retrieve purchase order details." + ], + purchase_order_id: Annotated[ + str, "Provide the unique identifier of the purchase order to retrieve its details." + ], + response_format: Annotated[ + str | None, + "Specifies the format of the purchase order details. Options: json, pdf, html. Default is json.", # noqa: E501 + ] = None, + print_pdf: Annotated[ + bool | None, "Set to True to print the exported PDF of the purchase order." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_purchase_order'."]: + """Retrieve the details of a purchase order. + + Use this tool to get detailed information about a specific purchase order by providing the purchase order ID. Ideal for retrieving purchase order data for review or processing.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchase_order_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchase_order_id=purchase_order_id, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "print": print_pdf, + "accept": response_format, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_purchase_order( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization within Zoho Books. Required to specify which organization's purchase order is to be deleted.", # noqa: E501 + ], + purchase_order_identifier: Annotated[ + str, "Unique identifier for the purchase order to delete." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_purchase_order'."]: + """Delete an existing purchase order in Zoho Books. + + Use this tool to remove a purchase order by providing its ID. The endpoint confirms the deletion once the operation is successful.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchase_order_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchase_order_id=purchase_order_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_custom_fields_purchase_order( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization associated with the purchase order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + purchase_order_id: Annotated[ + str | None, + "A unique identifier for the purchase order to update custom fields. 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_custom_fields_in_purchase_order'." +]: + """Update custom field values in purchase orders. + + This tool updates the values of custom fields within existing purchase orders in Zoho Books. It should be called when there is a need to modify or update custom information in a specific purchase order. + + 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[ + "UPDATECUSTOMFIELDSPURCHASEORDER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not purchase_order_id: + missing_params.append(("purchase_order_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECUSTOMFIELDSPURCHASEORDER_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["UPDATECUSTOMFIELDSPURCHASEORDER_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/purchaseorder/{purchaseorder_id}/customfields".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECUSTOMFIELDSPURCHASEORDER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def open_purchase_order( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books whose purchase order status needs to be changed.", # noqa: E501 + ], + purchase_order_identifier: Annotated[ + str, "Unique identifier for the purchase order to be marked as open." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_purchase_order_open'."]: + """Mark a draft purchase order as open. + + Use this tool to change the status of a draft purchase order to 'open' in Zoho Books, making it active and processable. Call this when you need to activate draft purchase orders.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/status/open".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_purchase_order_billed( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization in Zoho Books. Required to perform actions within the specified organization.", # noqa: E501 + ], + purchase_order_id: Annotated[ + str, "Unique identifier of the purchase order to be marked as billed." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_purchase_order_billed'."]: + """Mark a purchase order as billed in Zoho Books. + + Use this tool to update the status of a purchase order to 'billed' in Zoho Books. This is useful when a purchase order has been fulfilled and needs to be recorded as billed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/status/billed".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def cancel_purchase_order( + context: ToolContext, + organization_id: Annotated[ + str, + "The identifier for the organization in Zoho Books. This ID is required to specify which organization's purchase order should be cancelled.", # noqa: E501 + ], + purchase_order_id: Annotated[ + str, "The unique identifier of the purchase order to be cancelled." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_purchase_order_cancelled'."]: + """Cancel a specific purchase order in Zoho Books. + + Use this tool to mark a purchase order as cancelled within the Zoho Books platform. This is useful when an order needs to be invalidated or stopped.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/status/cancelled".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def submit_purchase_order( + context: ToolContext, + organization_identifier: Annotated[str, "The unique ID of the organization within Zoho Books."], + purchase_order_id: Annotated[ + str, "Unique identifier of the purchase order to be submitted for approval." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit_purchase_order'."]: + """Submit a purchase order for approval. + + Use this tool to submit a specific purchase order for approval in the Zoho Books system.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/submit".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def approve_purchase_order( + context: ToolContext, + organization_id: Annotated[ + str, + "The ID of the organization for which to approve the purchase order. This should be a unique string identifier provided by Zoho Books.", # noqa: E501 + ], + purchase_order_identifier: Annotated[ + str, "The unique identifier for the purchase order to be approved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'approve_purchase_order'."]: + """Approve a purchase order. + + This tool approves a specified purchase order in Zoho Books. It should be called when a purchase order needs to be authorized for further processing.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/approve".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def send_purchase_order_email( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique identifier for the organization. Required to specify which organization the purchase order belongs to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + purchase_order_id: Annotated[ + str | None, + "Unique identifier of the purchase order to be emailed to the vendor. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + email_attachments: Annotated[ + str | None, + "A comma-separated list of file paths or URLs to attach to the email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + attachment_file_name: Annotated[ + str | None, + "The name of the file to attach to the email for the purchase order. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + send_purchase_order_attachment: Annotated[ + bool | None, + "Set to true to include the purchase order as an attachment with the email. 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 'email_purchase_order'."]: + """Send a purchase order email to the vendor. + + Use this tool to email a purchase order to the vendor. If no custom content is provided, the email will be sent with default content. + + 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[ + "SENDPURCHASEORDEREMAIL_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not purchase_order_id: + missing_params.append(("purchase_order_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SENDPURCHASEORDEREMAIL_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["SENDPURCHASEORDEREMAIL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SENDPURCHASEORDEREMAIL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_identifier, + "attachments": email_attachments, + "send_attachment": send_purchase_order_attachment, + "file_name": attachment_file_name, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_purchase_order_email_content( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization to retrieve the purchase order email content for.", # noqa: E501 + ], + purchase_order_id: Annotated[ + str, "Unique identifier of the purchase order to retrieve its email content." + ], + email_template_id: Annotated[ + str | None, + "Get the email content based on a specific email template. Defaults to customer-associated or default template if not provided.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_purchase_order_email'."]: + """Retrieves the email content of a purchase order. + + Use this tool to get the email content related to a specific purchase order by providing its ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "email_template_id": email_template_id, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_purchase_order_billing_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization to update the billing address in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + purchase_order_identifier: Annotated[ + str | None, + "Unique identifier for the specific purchase order to update the billing address. 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_purchase_order_billing_address'." +]: + """Update the billing address for a specific purchase order. + + Use this tool to modify the billing address of a single purchase order in Zoho Books. + + 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[ + "UPDATEPURCHASEORDERBILLINGADDRESS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not purchase_order_identifier: + missing_params.append(("purchase_order_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPURCHASEORDERBILLINGADDRESS_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["UPDATEPURCHASEORDERBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/address/billing".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPURCHASEORDERBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_purchase_order_templates( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier of the organization for retrieving purchase order templates." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_purchase_order_templates'."]: + """Retrieve all purchase order PDF templates from Zoho Books. + + This tool is used to obtain a list of all available purchase order PDF templates in Zoho Books. It should be called when there's a need to view or select from existing purchase order templates.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/templates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_purchase_order_attachment( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID representing the organization. Required to specify which organization's purchase order to access.", # noqa: E501 + ], + purchase_order_id: Annotated[ + str, "The unique identifier of the purchase order to retrieve the attachment for." + ], + get_thumbnail: Annotated[ + bool | None, + "Set to true to get the thumbnail of the attachment, or false to retrieve the full file.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_purchase_order_attachment'."]: + """Retrieve the file attached to a specific purchase order. + + Use this tool to obtain the file attachment from a specific purchase order by providing the purchase order ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "preview": get_thumbnail, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def attach_file_to_purchase_order( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + purchase_order_id: Annotated[ + str, "The unique identifier of the purchase order to which the file will be attached." + ], + file_attachment: Annotated[ + str | None, + "The file to attach to the purchase order. Must be one of the following formats: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, or docx.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'add_purchase_order_attachment'."]: + """Attach a file to a specified purchase order. + + Use this tool to attach a file to a specified purchase order in Zoho Books. Useful for adding supplementary documents or files to your existing purchase orders.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_id, + "attachment": file_attachment, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_purchase_order_email_attachment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization for which the purchase order email attachment preference is being updated.", # noqa: E501 + ], + purchase_order_id: Annotated[ + str, + "Unique identifier of the purchase order to update the email attachment preference for.", + ], + include_attachment_with_email: Annotated[ + bool, + "Boolean to determine if the attachment should be sent with the purchase order email. Set to true to include the attachment, or false to exclude it.", # noqa: E501 + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'update_purchase_order_attachment'." +]: + """Update email attachment preference for a purchase order. + + This tool updates the preference to include or exclude the attached file when emailing a specific purchase order. It should be called when you need to change whether the attachment is sent via email for a particular purchase order.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="PUT", + params=remove_none_values({ + "organization_id": organization_id, + "can_send_in_mail": include_attachment_with_email, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_purchase_order_attachment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization in Zoho Books. This is required to specify which organization's records to access or modify.", # noqa: E501 + ], + purchase_order_id: Annotated[ + str, "Unique identifier of the purchase order to delete the attachment from." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'delete_purchase_order_attachment'." +]: + """Deletes the attachment from a purchase order. + + This tool is used to delete the file attached to a specified purchase order in Zoho Books, identified by the purchase order ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_purchase_order_comments( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization to retrieve purchase order comments for. Required to specify which organization's data to access.", # noqa: E501 + ], + purchase_order_id: Annotated[ + str, "Unique identifier for the specific purchase order to retrieve comments and history." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_purchase_order_comments'."]: + """Retrieve comments and history of a purchase order. + + Fetches the complete history and comments of a specified purchase order, useful for tracking and reviewing order details.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_purchase_order_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. This ID is required to specify which organization's purchase order is being commented on. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + purchase_order_identifier: Annotated[ + str | None, + "Unique identifier for the purchase order in Zoho Books. 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_purchase_order_comment'."]: + """Add a comment to a purchase order in Zoho Books. + + + + 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[ + "ADDPURCHASEORDERCOMMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not purchase_order_identifier: + missing_params.append(("purchase_order_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDPURCHASEORDERCOMMENT_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["ADDPURCHASEORDERCOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDPURCHASEORDERCOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_purchase_order_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID representing the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + purchase_order_id: Annotated[ + str | None, + "The unique identifier for the purchase order to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + comment_identifier: Annotated[ + str | None, + "Unique identifier of the comment to be updated in the purchase order. 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_purchase_order_comment'."]: + """Update an existing comment on a purchase order. + + Use this tool to update a specific comment on a purchase order in Zoho Books. It should be called when you need to modify or correct information in a comment related to a purchase order. + + 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[ + "UPDATEPURCHASEORDERCOMMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not purchase_order_id: + missing_params.append(("purchase_order_id", "path")) + if not comment_identifier: + missing_params.append(("comment_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPURCHASEORDERCOMMENT_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["UPDATEPURCHASEORDERCOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + comment_id=comment_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPURCHASEORDERCOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_purchase_order_comment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. Provide this to specify which organization's purchase order comment you wish to delete.", # noqa: E501 + ], + purchase_order_id: Annotated[ + str, "Unique identifier of the purchase order to delete the comment from." + ], + comment_unique_identifier: Annotated[ + str, + "Unique identifier of the comment to be deleted. Required to specify which comment to remove from a purchase order.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_purchase_order_comment'."]: + """Delete a comment from a purchase order. + + Use this tool to remove a specific comment associated with a purchase order by providing the purchase order ID and the comment ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + comment_id=comment_unique_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.purchaseorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def reject_purchase_order( + context: ToolContext, + organization_identifier: Annotated[ + str, "A unique identifier for the organization in Zoho Books." + ], + purchase_order_id: Annotated[str, "The ID of the purchase order to be rejected in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'reject_purchase_orders'."]: + """Reject a specific purchase order in Zoho Books. + + This tool should be called when you need to reject a purchase order in the Zoho Books system. It confirms the rejection of the specified purchase order.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/reject".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + purchaseorder_id=purchase_order_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_recurring_bill( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization in Zoho Books for which the recurring bill will be created. 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 'create_recurring_bill'."]: + """Create a recurring bill in Zoho Books. + + This tool creates a recurring bill in Zoho Books. Use it to automate periodic billing tasks and ensure payments are scheduled consistently. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATERECURRINGBILL_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATERECURRINGBILL_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["CREATERECURRINGBILL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringbills".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATERECURRINGBILL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_recurring_bill_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization associated with the recurring bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_field_unique_identifier_key: Annotated[ + str | None, + "The API name of the unique custom field used to identify the recurring bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "Unique value of the custom field used to identify the recurring bill. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + allow_creation_if_missing: Annotated[ + bool | None, + "Set to true to create a new recurring bill if the unique custom field value is not found. 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_recurring_bill_using_custom_field'." +]: + """Update or create a recurring bill using a unique custom field. + + This tool updates a recurring bill by identifying it through a custom field with a unique value. If the unique value does not match any existing recurring bills and the X-Upsert header is true, a new bill will be created if the necessary details are provided. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATERECURRINGBILLCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERECURRINGBILLCUSTOMFIELD_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["UPDATERECURRINGBILLCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringbills".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERECURRINGBILLCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": custom_field_unique_identifier_key, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": allow_creation_if_missing, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_recurring_bill( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. This ID is required to specify the organization whose recurring bill is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + recurring_bill_identifier: Annotated[ + str | None, + "Unique identifier for the recurring bill to be updated. 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_recurring_bill'."]: + """Update details of a recurring bill in Zoho Books. + + Use this tool to update a recurring bill in Zoho Books. Modify its details including line items by removing them from the list if needed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATERECURRINGBILL_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not recurring_bill_identifier: + missing_params.append(("recurring_bill_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERECURRINGBILL_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["UPDATERECURRINGBILL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringbills/{recurring_bill_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_bill_id=recurring_bill_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERECURRINGBILL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_recurring_bill_details( + context: ToolContext, + organization_identifier: Annotated[str, "The unique ID of the organization in Zoho Books."], + recurring_bill_unique_id: Annotated[ + str, "Unique identifier for the recurring bill in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_recurring_bill'."]: + """Retrieve details of a recurring bill from Zoho Books. + + This tool retrieves comprehensive details of a specified recurring bill using its ID. It should be called when detailed information about a recurring bill is required from Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurring_bills/{recurring_bill_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_bill_id=recurring_bill_unique_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_recurring_bill( + context: ToolContext, + organization_identifier: Annotated[ + str, "ID of the organization in Zoho Books to delete a recurring bill from." + ], + recurring_bill_identifier: Annotated[ + str, "Unique identifier of the recurring bill to be deleted in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_recurring_bill'."]: + """Delete an existing recurring bill in Zoho Books. + + Use this tool to delete a recurring bill identified by its ID in Zoho Books. This is useful when managing financial records and removing bills that are no longer needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurring_bills/{recurring_bill_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_bill_id=recurring_bill_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def stop_recurring_bill( + context: ToolContext, + organization_id: Annotated[str, "The unique ID representing the organization in Zoho Books."], + recurring_bill_identifier: Annotated[ + str, "Unique identifier for the recurring bill to be stopped." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'stop_recurring_bill'."]: + """Stop an active recurring bill in Zoho Books. + + Use this tool to stop an active recurring bill in Zoho Books when you need to discontinue ongoing payments. It provides confirmation upon successful stoppage.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringbills/{recurring_bill_id}/status/stop".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_bill_id=recurring_bill_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def resume_recurring_bill( + context: ToolContext, + organization_id: Annotated[str, "The unique ID for the organization in Zoho Books."], + recurring_bill_identifier: Annotated[ + str, "Provide the unique identifier of the recurring bill to resume it in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'resume_recurring_bill'."]: + """Resume a stopped recurring bill in Zoho Books. + + Use this tool to restart a suspended recurring bill in Zoho Books, ensuring payments continue as scheduled.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringbills/{recurring_bill_id}/status/resume".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_bill_id=recurring_bill_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.bills.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_recurring_bill_history( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which you want to get the recurring bill history." + ], + recurring_bill_identifier: Annotated[ + str, + "Unique identifier for the specific recurring bill. Required to fetch its history and comments.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_recurring_bill_history'."]: + """Get history and comments of a recurring bill. + + Use this tool to fetch detailed history and comments related to a specific recurring bill by providing the recurring bill ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringbills/{recurring_bill_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_bill_id=recurring_bill_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_recurring_expense( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. This ID is necessary to specify which organization's records to create the recurring expense under. 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 'create_recurring_expense'."]: + """Create a recurring expense in Zoho Books. + + Use this tool to create a recurring expense in Zoho Books. It allows you to automate expense tracking by setting expenses to recur at specified intervals. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATERECURRINGEXPENSE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATERECURRINGEXPENSE_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["CREATERECURRINGEXPENSE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringexpenses".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATERECURRINGEXPENSE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_recurring_expenses( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier of the organization whose recurring expenses need to be listed." + ], + recurring_expense_name_filter: Annotated[ + str | None, + "Filter recurring expenses by name using either 'startswith' or 'contains'. Maximum length is 100 characters.", # noqa: E501 + ] = None, + search_by_last_created_date: Annotated[ + str | None, + "Filter recurring expenses based on last generated expense date. Use formats: last_created_date_start, last_created_date_end, last_created_date_before, last_created_date_after with date [yyyy-mm-dd].", # noqa: E501 + ] = None, + filter_by_next_expense_date: Annotated[ + str | None, + "Filter recurring expenses by dates related to the next expected expense. Options include 'next_expense_date_start', 'next_expense_date_end', 'next_expense_date_before', and 'next_expense_date_after'. Format is 'yyyy-mm-dd'.", # noqa: E501 + ] = None, + expense_status: Annotated[ + str | None, + "Specify the status of expenses to search for. Allowed values are 'active', 'stopped', and 'expired'.", # noqa: E501 + ] = None, + account_id_for_expense: Annotated[ + str | None, + "Specify the unique identifier for the expense account to filter expenses associated with it.", # noqa: E501 + ] = None, + filter_by_account_name: Annotated[ + str | None, + "Search expenses by account name with options for exact match or partial match using 'startswith' and 'contains'. Max-length is 100 characters.", # noqa: E501 + ] = None, + amount_filter: Annotated[ + float | None, + "Specify a filter for expense amounts, such as 'amount_less_than', 'amount_less_equals', 'amount_greater_than', or 'amount_greater_than'.", # noqa: E501 + ] = None, + search_by_customer_name: Annotated[ + str | None, + "Search recurring expenses by customer name. Use variants 'customer_name_startswith' or 'customer_name_contains'. Max 100 characters.", # noqa: E501 + ] = None, + search_by_customer_id: Annotated[ + str | None, "Specify the customer ID to search expenses associated with that customer." + ] = None, + paid_through_account_id: Annotated[ + str | None, "ID of the account through which the expense was paid. Used to filter expenses." + ] = None, + expense_status_filter: Annotated[ + str | None, + "Filter recurring expenses by their status. Use 'Status.All', 'Status.Active', 'Status.Expired', or 'Status.Stopped'.", # noqa: E501 + ] = None, + search_expenses_by_text: Annotated[ + str | None, + "Specify text to search expenses by account name, description, customer name, or vendor name. Maximum length is 100 characters.", # noqa: E501 + ] = None, + sort_expenses_by_column: Annotated[ + str | None, + "Specify the column to sort expenses by. Allowed values: next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name, created_time.", # noqa: E501 + ] = None, + page_number_to_fetch: Annotated[ + int | None, "The page number of records to retrieve, starting from 1. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Specify how many records to retrieve per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_recurring_expenses'."]: + """Retrieve all recurring expenses from your records. + + Use this tool to fetch a list of all recurring expenses. Ideal for situations where you need to review or manage periodic expenses systematically.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringexpenses".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "recurrence_name": recurring_expense_name_filter, + "last_created_date": search_by_last_created_date, + "next_expense_date": filter_by_next_expense_date, + "status": expense_status, + "account_id": account_id_for_expense, + "account_name": filter_by_account_name, + "amount": amount_filter, + "customer_name": search_by_customer_name, + "customer_id": search_by_customer_id, + "paid_through_account_id": paid_through_account_id, + "filter_by": expense_status_filter, + "search_text": search_expenses_by_text, + "sort_column": sort_expenses_by_column, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_recurring_expense( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Unique identifier for the organization whose recurring expense is to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_api_name: Annotated[ + str | None, + "Unique CustomField API Name to identify the recurring expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "Unique value of the CustomField used to identify the recurring expense. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_new_recurring_if_not_found: Annotated[ + bool | None, + "Set to true to create a new recurring expense if the unique custom field value is not found. 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_recurring_expense_using_custom_field'." +]: + """Update or create a recurring expense using a custom field. + + Use this tool to update a recurring expense in Zoho Books by specifying a unique custom field value. If the expense doesn't exist and upsert is enabled, a new expense can be created. This is useful for maintaining accurate financial records. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATERECURRINGEXPENSE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERECURRINGEXPENSE_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["UPDATERECURRINGEXPENSE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringexpenses".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERECURRINGEXPENSE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": create_new_recurring_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def modify_recurring_expense( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Provide the ID of the organization for which the recurring expense needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + recurring_expense_identifier: Annotated[ + str | None, + "Unique identifier for the recurring expense to be updated. 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_recurring_expense'."]: + """Update a recurring expense in Zoho Books. + + Use this tool to modify details of an existing recurring expense in Zoho Books. + + 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[ + "MODIFYRECURRINGEXPENSE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not recurring_expense_identifier: + missing_params.append(("recurring_expense_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["MODIFYRECURRINGEXPENSE_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["MODIFYRECURRINGEXPENSE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_expense_id=recurring_expense_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["MODIFYRECURRINGEXPENSE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_recurring_expense_details( + context: ToolContext, + organization_id: Annotated[ + str, + "Provide the ID of the organization to retrieve its specific recurring expense details from Zoho Books.", # noqa: E501 + ], + recurring_expense_id: Annotated[ + str, "Unique identifier for the recurring expense to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_recurring_expense'."]: + """Get details of a specific recurring expense in Zoho Books. + + Use this tool to retrieve information about a particular recurring expense by providing its ID. Helpful for managing or reviewing ongoing expense details.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_expense_id=recurring_expense_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_recurring_expense( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + recurring_expense_id: Annotated[ + str, "The unique identifier for the recurring expense to be deleted in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_recurring_expense'."]: + """Delete an existing recurring expense in Zoho Books. + + Use this tool to delete a recurring expense from Zoho Books when it's no longer needed or has been replaced. The tool confirms the successful removal of the specified recurring expense.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_expense_id=recurring_expense_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def stop_recurring_expense( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books for which the recurring expense will be stopped.", # noqa: E501 + ], + recurring_expense_identifier: Annotated[ + str, "Unique identifier for the recurring expense to be stopped." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'stop_recurring_expense'."]: + """Stop an active recurring expense in Zoho Books. + + This tool is used to stop an active recurring expense in Zoho Books. It should be called when a user wants to terminate a recurring payment schedule associated with an expense.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}/status/stop".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_expense_id=recurring_expense_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def resume_recurring_expense( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + recurring_expense_id: Annotated[ + str, "The unique identifier for the recurring expense to be resumed." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'resume_recurring_expense'."]: + """Resumes a stopped recurring expense cycle. + + Use this tool to restart a recurring expense that has been previously paused in Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}/status/resume".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_expense_id=recurring_expense_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_child_expenses( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization to list child expenses for." + ], + recurring_expense_identifier: Annotated[ + str, "Unique identifier for the recurring expense to retrieve child expenses." + ], + sort_expenses_by: Annotated[ + str | None, + "Specify the field to sort expenses. Valid options: next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name, created_time.", # noqa: E501 + ] = None, + fetch_page_number: Annotated[ + int | None, "Specify the page number to retrieve. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Specify the number of expense records to retrieve per page. Default is 200." + ] = 200, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'list_child_expenses_of_recurring_expense'." +]: + """Retrieve child expenses from a recurring expense. + + Use this tool to list expenses that have been generated from a specific recurring expense. Useful for tracking individual instances of a recurring cost.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}/expenses".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_expense_id=recurring_expense_identifier, + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "sort_column": sort_expenses_by, + "page": fetch_page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.expenses.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_recurring_expense_history( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the recurring expense history is requested." + ], + recurring_expense_id: Annotated[ + str, + "Unique identifier for the specific recurring expense to retrieve history and comments.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_recurring_expense_history'."]: + """Get history and comments of a recurring expense. + + Use this tool to retrieve the history and comments associated with a specific recurring expense in Zoho Books. Call this tool when you need detailed information about past actions and notes on a recurring expense item.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_expense_id=recurring_expense_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_recurring_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the recurring invoice is being created. 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 'create_recurring_invoice'."]: + """Create a new recurring invoice in Zoho Books. + + This tool creates a new recurring invoice within Zoho Books. Use this tool when you need to automate the billing of customers on a regular schedule. It returns the details of the invoice created, enabling tracking and management of recurring payments. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATERECURRINGINVOICE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATERECURRINGINVOICE_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["CREATERECURRINGINVOICE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringinvoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATERECURRINGINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_recurring_invoices( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization for which you want to list the recurring invoices. Required for accessing specific organization's data.", # noqa: E501 + ], + recurrence_unique_name: Annotated[ + str | None, + "Unique name for the recurring profile, provided by the user. Max-length is 100 characters.", # noqa: E501 + ] = None, + search_by_item_name: Annotated[ + str | None, + "Search recurring invoices by item name, using 'item_name_startswith' or 'profileitemname_contains' variants.", # noqa: E501 + ] = None, + item_description_filter: Annotated[ + str | None, + "Search for recurring invoices by item description using 'startswith' or 'contains' criteria.", # noqa: E501 + ] = None, + customer_name: Annotated[ + str | None, + "Name of the customer for whom the recurring invoice is raised. Use this to filter invoices by customer.", # noqa: E501 + ] = None, + line_item_id: Annotated[ + str | None, "Specify the line item ID for filtering recurring invoices." + ] = None, + item_id: Annotated[ + str | None, "Unique identifier for the item associated with the recurring invoice." + ] = None, + tax_identifier: Annotated[ + str | None, "ID of the tax or tax group associated with the recurring invoice." + ] = None, + invoice_note: Annotated[ + str | None, + "A short note for the recurring invoice, providing additional details or context.", + ] = None, + recurring_invoice_start_date: Annotated[ + str | None, "The date on which the recurring invoice starts. Format: YYYY-MM-DD." + ] = None, + recurring_invoice_end_date: Annotated[ + str | None, "The date when the recurring invoice expires, formatted as YYYY-MM-DD." + ] = None, + customer_id: Annotated[ + str | None, + "The ID of the customer for whom the recurring invoice is raised. Use this to filter invoices specific to a customer.", # noqa: E501 + ] = None, + recurring_invoice_status: Annotated[ + str | None, "Status of the recurring invoice: 'active', 'stopped', or 'expired'." + ] = None, + filter_recurring_invoice_status: Annotated[ + str | None, + "Filter recurring invoices by status or payment expected date. Allowed values: Status.All, Status.Active, Status.Stopped, Status.Expired.", # noqa: E501 + ] = None, + search_text: Annotated[ + str | None, + "Search invoices by invoice number, purchase order, or customer name. Maximum length is 100 characters.", # noqa: E501 + ] = None, + sort_by_column: Annotated[ + str | None, + "Specify the column to sort the recurring invoices by. Leave empty for no sorting.", + ] = None, + page_number: Annotated[int | None, "The page number to fetch, with a default value of 1."] = 1, + records_per_page: Annotated[ + int | None, "Number of records to retrieve per page, with a default of 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_recurring_invoices'."]: + """Retrieve details of all recurring invoices. + + Use this tool to get detailed information on all recurring invoices. Ideal for managing invoicing schedules and monitoring recurring payments.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringinvoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "recurrence_name": recurrence_unique_name, + "item_name": search_by_item_name, + "item_description": item_description_filter, + "customer_name": customer_name, + "line_item_id": line_item_id, + "item_id": item_id, + "tax_id": tax_identifier, + "notes": invoice_note, + "start_date": recurring_invoice_start_date, + "end_date": recurring_invoice_end_date, + "customer_id": customer_id, + "status": recurring_invoice_status, + "filter_by": filter_recurring_invoice_status, + "search_text": search_text, + "sort_column": sort_by_column, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_recurring_invoice_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. This ID is required to update or create a recurring invoice using the custom field. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_api_name: Annotated[ + str | None, + "The unique API name of the custom field used to identify which recurring invoice to update or create. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "The unique value for the custom field used to identify and update the recurring invoice. This should be a unique string associated with a custom field configured to reject duplicates. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + enable_upsert: Annotated[ + bool | None, + "Set to true to create a new invoice if no existing invoice matches the unique identifier. Set to false to update only without creating a new invoice. 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_recurring_invoice_using_custom_field'." +]: + """Update or create a recurring invoice using a custom field. + + This tool updates an existing recurring invoice or creates a new one using a custom field's unique value. Use when you need to update invoices based on unique custom identifiers. If the unique key isn't found and the upsert option is true, a new invoice is created. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATERECURRINGINVOICECUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERECURRINGINVOICECUSTOMFIELD_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["UPDATERECURRINGINVOICECUSTOMFIELD_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringinvoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERECURRINGINVOICECUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": enable_upsert, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_recurring_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books. Required for updating a recurring invoice. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + recurring_invoice_id: Annotated[ + str | None, + "Unique identifier of the recurring invoice to be updated in Zoho Books. 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_recurring_invoice'."]: + """Update details of a recurring invoice in Zoho Books. + + Use this tool to modify an existing recurring invoice in Zoho Books by specifying the invoice ID. + + 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[ + "UPDATERECURRINGINVOICE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not recurring_invoice_id: + missing_params.append(("recurring_invoice_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERECURRINGINVOICE_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["UPDATERECURRINGINVOICE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_invoice_id=recurring_invoice_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERECURRINGINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_recurring_invoice_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to access organization-specific data.", # noqa: E501 + ], + recurring_invoice_identifier: Annotated[ + str, "Unique identifier for the recurring invoice to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_recurring_invoice'."]: + """Retrieve details of a specific recurring invoice. + + Use this tool to access detailed information about a recurring invoice using its ID. It's useful for financial tracking and management purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_invoice_id=recurring_invoice_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_recurring_invoice( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization to which the recurring invoice belongs. Required for identifying the correct organization.", # noqa: E501 + ], + recurring_invoice_id: Annotated[ + str, "Unique identifier for the recurring invoice to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_recurring_invoice'."]: + """Delete an existing recurring invoice. + + Call this tool to remove a recurring invoice from the system. Ensure you have the correct invoice ID to successfully delete the desired invoice.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_invoice_id=recurring_invoice_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def stop_recurring_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the recurring invoice is to be stopped. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + recurring_invoice_id: Annotated[ + str | None, + "The unique identifier for the recurring invoice to be stopped. 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 'stop_recurring_invoice'."]: + """Stop an active recurring invoice in Zoho Books. + + Use this tool to stop an active recurring invoice by providing the recurring invoice ID. This tool is useful for managing billing cycles when you need to halt a recurring charge. + + 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["STOPRECURRINGINVOICE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not recurring_invoice_id: + missing_params.append(("recurring_invoice_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["STOPRECURRINGINVOICE_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["STOPRECURRINGINVOICE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}/status/stop".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_invoice_id=recurring_invoice_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["STOPRECURRINGINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def resume_recurring_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization whose invoice needs to be resumed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + recurring_invoice_id: Annotated[ + str | None, + "Unique identifier of the recurring invoice to be resumed. 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 'resume_recurring_invoice'."]: + """Resumes a stopped recurring invoice. + + Use this tool to resume a recurring invoice that has been paused. + + 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[ + "RESUMERECURRINGINVOICE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not recurring_invoice_id: + missing_params.append(("recurring_invoice_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["RESUMERECURRINGINVOICE_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["RESUMERECURRINGINVOICE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}/status/resume".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_invoice_id=recurring_invoice_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["RESUMERECURRINGINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_recurring_invoice_template( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique identifier of the organization. This ID is used to specify which organization's recurring invoice template will be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + recurring_invoice_identifier: Annotated[ + str | None, + "Unique identifier of the recurring invoice to update the PDF template for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + invoice_template_id: Annotated[ + str | None, + "Unique identifier of the recurring invoice template to update. 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_recurring_invoice_template'." +]: + """Update the PDF template for a recurring invoice. + + This tool updates the PDF template associated with a specific recurring invoice in Zoho Books. It is used when you need to change the template for invoices that are generated on a recurring basis. + + 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[ + "UPDATERECURRINGINVOICETEMPLATE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not recurring_invoice_identifier: + missing_params.append(("recurring_invoice_identifier", "path")) + if not invoice_template_id: + missing_params.append(("invoice_template_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERECURRINGINVOICETEMPLATE_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["UPDATERECURRINGINVOICETEMPLATE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}/templates/{template_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_invoice_id=recurring_invoice_identifier, + template_id=invoice_template_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERECURRINGINVOICETEMPLATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_recurring_invoice_history( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization. Required to access invoice history." + ], + recurring_invoice_id: Annotated[ + str, + "Unique identifier for the specific recurring invoice to retrieve its history and comments.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_recurring_invoice_history'."]: + """Get the complete history and comments of a recurring invoice. + + Use this tool to retrieve detailed history and comment logs for a specific recurring invoice. Ideal for reviewing past transactions and communication related to an invoice.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + recurring_invoice_id=recurring_invoice_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_retainer_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization for which the retainer invoice is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to ignore automatic invoice number generation and manually input the invoice number. 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 'create_retainer_invoice'."]: + """Create a retainer invoice for a customer. + + Use this tool to create a retainer invoice for a customer through Zoho Books. It should be called when you need to generate an invoice requiring advance payment or retaining fees for services or products. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATERETAINERINVOICE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATERETAINERINVOICE_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["CREATERETAINERINVOICE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/retainerinvoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATERETAINERINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "ignore_auto_number_generation": ignore_auto_number_generation, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_retainer_invoices( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization within Zoho Books." + ], + sort_by_column: Annotated[ + str | None, + "Specifies the column to sort retainer invoices by. Allowed values: 'customer_name', 'retainer_invoice_number', 'date', 'due_date', 'total', 'balance', 'created_time'.", # noqa: E501 + ] = None, + filter_invoices_by_status_or_date: Annotated[ + str | None, + "Filter invoices by status or payment expected date. Valid values: Status.All, Status.Sent, Status.Draft, Status.OverDue, Status.Paid, Status.Void, Status.Unpaid, Status.PartiallyPaid, Status.Viewed, Date.PaymentExpectedDate.", # noqa: E501 + ] = None, + sorting_order: Annotated[ + str | None, + "The order for sorting retainer invoices. Typically 'asc' for ascending or 'desc' for descending.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, "Specifies the page number for pagination when listing retainer invoices." + ] = None, + records_per_page: Annotated[ + int | None, "Number of records to fetch per page. Default is 200." + ] = 200, + print_pdf: Annotated[ + bool | None, "Set to true to print the exported PDF of retainer invoices." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_retainer_invoices'."]: + """List all retainer invoices with pagination. + + Retrieve a complete list of retainer invoices. Use this tool to access invoices with pagination support.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "print": print_pdf, + "sort_column": sort_by_column, + "filter_by": filter_invoices_by_status_or_date, + "sort_order": sorting_order, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def modify_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization within Zoho Books to which the retainer invoice belongs. This is required to ensure the update is applied to the correct entity. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + retainer_invoice_id: Annotated[ + str | None, + "Unique identifier of the retainer invoice to be updated. 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_retainer_invoice'."]: + """Update an existing invoice in Zoho Books. + + This tool updates the information of an existing retainer invoice in Zoho Books. Use it when you need to modify invoice details. + + 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["MODIFYINVOICE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not retainer_invoice_id: + missing_params.append(("retainer_invoice_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["MODIFYINVOICE_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["MODIFYINVOICE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["MODIFYINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_retainer_invoice_details( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier of the organization to retrieve the retainer invoice for." + ], + retainer_invoice_id: Annotated[ + str, "Unique identifier of the retainer invoice to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_retainer_invoice'."]: + """Retrieve details of a specific retainer invoice. + + Use this tool to obtain details about a retainer invoice by specifying the invoice ID. Ideal for checking invoice status, amount, and related information.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_retainer_invoice( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization whose retainer invoice you want to delete." + ], + retainer_invoice_identifier: Annotated[ + str, + "Unique identifier of the retainer invoice to delete. Required for specifying the invoice to be removed.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_retainer_invoice'."]: + """Delete an existing retainer invoice. + + Use this tool to delete a retainer invoice. Note that invoices with applied payments or credit notes cannot be deleted.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_invoice_sent( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. This ID is necessary to specify which organization's invoice should be marked as sent.", # noqa: E501 + ], + retainer_invoice_id: Annotated[ + str, "Unique identifier of the retainer invoice to be marked as sent." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_retainer_invoice_sent'."]: + """Marks a draft retainer invoice as sent. + + Use this tool to update the status of a draft retainer invoice to 'sent' in Zoho Books. This is useful when you need to track the invoice as having been dispatched to a client.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/status/sent".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def modify_retainer_invoice_template( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The ID of the organization to update the retainer invoice template for. It should be a string representing the organization's unique identifier in Zoho Books.", # noqa: E501 + ], + retainer_invoice_id: Annotated[ + str, "Unique identifier for the retainer invoice to update the PDF template." + ], + retainer_invoice_template_id: Annotated[ + str, "Unique identifier of the retainer invoice template." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'update_retainer_invoice_template'." +]: + """Update the PDF template for a retainer invoice. + + Use this tool to update the PDF template associated with a specific retainer invoice by providing the retainer invoice ID and the template ID. It should be called when you need to change the appearance or format of a retainer invoice.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/templates/{template_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + template_id=retainer_invoice_template_id, + ), + method="PUT", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def void_retainer_invoice( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization required to identify which organization's invoice to void." + ], + retainer_invoice_id: Annotated[ + str, "Unique identifier for the retainer invoice to be marked as void." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_retainer_invoice_void'."]: + """Mark a retainer invoice as void. + + This tool marks a specified retainer invoice as void, disassociating any payments and credits and moving them under customer credits.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/status/void".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_retainer_invoice_as_draft( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization in Zoho Books."], + retainer_invoice_id: Annotated[ + str, "Unique identifier of the retainer invoice to be marked as draft." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_retainer_invoice_draft'."]: + """Mark a voided retainer invoice as draft. + + Use this tool to change the status of a voided retainer invoice back to draft. This is useful when you need to reuse or edit a voided invoice within Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{reatinerinvoice_id}/status/draft".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + reatinerinvoice_id=retainer_invoice_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def submit_retainer_invoice( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization in Zoho Books to which the retainer invoice belongs." + ], + retainer_invoice_unique_id: Annotated[ + str, "Unique identifier of the retainer invoice for submission." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit_retainer_invoice'."]: + """Submit a retainer invoice for approval in Zoho Books. + + Use this tool to submit a specific retainer invoice for approval in Zoho Books. Call this tool when you need to send a retainer invoice for review and approval.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{reatinerinvoice_id}/submit".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + reatinerinvoice_id=retainer_invoice_unique_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def approve_retainer_invoice( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the retainer invoice is being approved." + ], + retainer_invoice_id: Annotated[str, "Unique identifier of the retainer invoice to approve."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'approve_retainer_invoice'."]: + """Approve a retainer invoice in Zoho Books. + + Use this tool to approve a specific retainer invoice in Zoho Books when you have the invoice ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{reatinerinvoice_id}/approve".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + reatinerinvoice_id=retainer_invoice_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def email_retainer_invoice_to_customer( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + retainer_invoice_id: Annotated[ + str | None, + "The unique identifier of the retainer invoice to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + email_attachments: Annotated[ + str | None, + "List of file paths or URLs for files to attach to the email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + send_customer_statement: Annotated[ + bool | None, + "Set to true to send the customer statement PDF with the email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + attach_invoice_to_email: Annotated[ + bool | None, + "Attach the retainer invoice to the email if true. Accepts a boolean value. 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 'email_retainer_invoice'."]: + """Send a retainer invoice to a customer via email. + + This tool emails a retainer invoice to the specified customer. If no custom content is provided, the email will use the default content. + + 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[ + "EMAILRETAINERINVOICETOCUSTOMER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not retainer_invoice_id: + missing_params.append(("retainer_invoice_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["EMAILRETAINERINVOICETOCUSTOMER_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["EMAILRETAINERINVOICETOCUSTOMER_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EMAILRETAINERINVOICETOCUSTOMER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "send_customer_statement": send_customer_statement, + "send_attachment": attach_invoice_to_email, + "attachments": email_attachments, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_retainer_invoice_email_content( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization. Required to access retainer invoice emails." + ], + retainer_invoice_id: Annotated[ + str, "Unique identifier of the retainer invoice. Used to fetch the specific email content." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_retainer_invoice_email'."]: + """Retrieve the email content of a retainer invoice. + + This tool fetches the email content of a specific retainer invoice using the provided invoice ID. It should be called when you need to view or send the email details of a retainer invoice.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_billing_address_retainer_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Required to specify which organization's invoice needs updating. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + retainer_invoice_id: Annotated[ + str | None, + "Unique identifier of the retainer invoice to update the billing address. 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_retainer_invoice_billing_address'." +]: + """Update billing address for a retainer invoice. + + This tool updates the billing address associated with a specific retainer invoice. It should be used when there's a need to change the billing address for a particular invoice without affecting other records. + + 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[ + "UPDATEBILLINGADDRESSRETAINERINVOICE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not retainer_invoice_id: + missing_params.append(("retainer_invoice_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEBILLINGADDRESSRETAINERINVOICE_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["UPDATEBILLINGADDRESSRETAINERINVOICE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/address/billing".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEBILLINGADDRESSRETAINERINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_retainer_invoice_templates( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization to retrieve retainer invoice templates from." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_retainer_invoice_templates'."]: + """Retrieve all retainer invoice PDF templates. + + Call this tool to get a list of all available retainer invoice PDF templates from Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/templates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_retainer_invoice_attachment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization whose invoice attachment you want to retrieve.", + ], + retainer_invoice_id: Annotated[ + str, + "Unique identifier of the retainer invoice for which the attachment is to be retrieved.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_retainer_invoice_attachment'."]: + """Retrieve the file attached to a retainer invoice. + + Use this tool to get the file that has been attached to a specific retainer invoice. It is helpful when you need to view or download the attached document related to the invoice.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def attach_file_to_invoice( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization to which the invoice belongs. Required to specify the correct entity for file attachment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + retainer_invoice_identifier: Annotated[ + str | None, + "Unique identifier of the retainer invoice to which the file will be attached. 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_retainer_invoice_attachment'."]: + """Attach a file to an invoice. + + Use this tool to upload and attach a file to a specified retainer invoice. This is useful for adding supporting documents or additional information to invoices. + + 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["ATTACHFILETOINVOICE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not retainer_invoice_identifier: + missing_params.append(("retainer_invoice_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ATTACHFILETOINVOICE_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["ATTACHFILETOINVOICE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ATTACHFILETOINVOICE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_retainer_invoice_attachment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books whose invoice attachment is to be deleted.", # noqa: E501 + ], + retainer_invoice_id: Annotated[ + str, + "Unique identifier of the retainer invoice to specify which invoice's attachment should be deleted.", # noqa: E501 + ], + document_id: Annotated[ + str, "Unique identifier of the retainer invoice document to be deleted." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'delete_retainer_invoice_attachment'." +]: + """Delete a file attached to a retainer invoice. + + Use this tool to delete a specific file attached to a retainer invoice. Call it when you need to remove an attachment from an invoice in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/documents/{document_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + document_id=document_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_retainer_invoice_history( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization to fetch its retainer invoice history." + ], + retainer_invoice_id: Annotated[ + str, "Unique identifier of the retainer invoice to look up its history and comments." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_retainer_invoice'."]: + """Get the history and comments of a retainer invoice. + + Fetches complete history and comments for a specific retainer invoice by ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_retainer_invoice_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Unique ID string of the organization in Zoho Books to add a comment to a retainer invoice. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + retainer_invoice_id: Annotated[ + str | None, + "A unique identifier for the retainer invoice you want to comment on. 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_retainer_invoice_comment'."]: + """Add a comment to a specific retainer invoice. + + This tool is used to add a comment to a specified retainer invoice in Zoho Books. It should be called when a user wishes to provide additional information or notes related to an existing retainer invoice. + + 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[ + "ADDRETAINERINVOICECOMMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not retainer_invoice_id: + missing_params.append(("retainer_invoice_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDRETAINERINVOICECOMMENT_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["ADDRETAINERINVOICECOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDRETAINERINVOICECOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_retainer_invoice_comment( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID of the organization within Zoho Books for which the comment is to be deleted.", # noqa: E501 + ], + retainer_invoice_id: Annotated[ + str, + "Unique identifier of the retainer invoice to find the specific invoice for comment deletion.", # noqa: E501 + ], + comment_identifier: Annotated[ + str, "Unique identifier of the comment to be deleted from the retainer invoice." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_retainer_invoice_comment'."]: + """Remove a specific comment from a retainer invoice. + + Use this tool to delete a comment from a retainer invoice in Zoho Books by providing the retainer invoice ID and the comment ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + comment_id=comment_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_retainer_invoice_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization to which the retainer invoice belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + retainer_invoice_id: Annotated[ + str | None, + "Unique identifier of the retainer invoice to update the comment for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + comment_identifier: Annotated[ + str | None, + "The unique identifier of the comment to be updated. 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_retainer_invoice_comment'."]: + """Update a comment on a retainer invoice. + + Use this tool to update an existing comment of a retainer invoice by specifying the invoice and comment IDs. + + 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[ + "UPDATERETAINERINVOICECOMMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not retainer_invoice_id: + missing_params.append(("retainer_invoice_id", "path")) + if not comment_identifier: + missing_params.append(("comment_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERETAINERINVOICECOMMENT_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["UPDATERETAINERINVOICECOMMENT_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + retainerinvoice_id=retainer_invoice_id, + comment_id=comment_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERETAINERINVOICECOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_sales_order( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization for which the sales order is being created. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + total_number_of_files: Annotated[ + int | None, + "Specify the total number of files to be attached to the sales order. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + document_attachment: Annotated[ + str | None, + "A document to be attached to the sales order. Provide as a string containing the document details or content. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to ignore auto sales order number generation, requiring manual sales order number entry. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + can_send_via_email: Annotated[ + bool | None, + "Set to true if the file can be sent via email. Only used when mode is 'execute'.", + ] = None, + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'create_sales_order'."]: + """Create a sales order for a customer. + + This tool creates a sales order for a customer using Zoho Books. It should be called when you need to generate a new sales order in your accounting system. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATESALESORDER_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATESALESORDER_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["CREATESALESORDER_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorders".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATESALESORDER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_identifier, + "ignore_auto_number_generation": ignore_auto_number_generation, + "can_send_in_mail": can_send_via_email, + "totalFiles": total_number_of_files, + "doc": document_attachment, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_sales_orders( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which sales orders are to be listed." + ], + sort_column: Annotated[ + str | None, + "Column field to sort sales order results. Options: customer_name, salesorder_number, shipment_date, last_modified_time, reference_number, total, date, created_time.", # noqa: E501 + ] = None, + cross_field_search_text: Annotated[ + str | None, + "A general search term for matching text across fields like sales order number, reference number, and customer name for quick identification.", # noqa: E501 + ] = None, + filter_sales_order_by_status: Annotated[ + str | None, + "Filter sales orders by status. Options: All, Open, Draft, OverDue, PartiallyInvoiced, Invoiced, Void, Closed.", # noqa: E501 + ] = None, + filter_by_sales_order_number: Annotated[ + str | None, + "Filter sales orders by sales order number with operators: startswith, not_in, in, or contains. Max length: 100 characters.", # noqa: E501 + ] = None, + filter_by_item_name: Annotated[ + str | None, + "Filter sales orders by line item name. Use matching operators like startswith, not_in, in, and contains. Max length: 100 characters.", # noqa: E501 + ] = None, + filter_by_item_id: Annotated[ + str | None, + "Filter sales orders by a specific line item identifier to retrieve orders containing a particular product or service.", # noqa: E501 + ] = None, + filter_by_item_description: Annotated[ + str | None, + "Filter sales orders by line item description. Supports variants like startswith, not_in, in, and contains. Max length: 100 characters.", # noqa: E501 + ] = None, + filter_by_reference_number: Annotated[ + str | None, + "Filter sales orders by external reference number using operators like `startswith`, `not_in`, `in`, and `contains`.", # noqa: E501 + ] = None, + customer_name_filter: Annotated[ + str | None, + "Filter sales orders by customer name with operators like startswith, not_in, in, and contains. Max length: 100 characters.", # noqa: E501 + ] = None, + filter_by_total: Annotated[ + float | None, + "Specify range operators to filter sales orders by total. Use total_start, total_end, total_less_than, total_greater_than, etc.", # noqa: E501 + ] = None, + creation_date_filter: Annotated[ + str | None, + "Filter sales orders by creation date using operators like `date_start`, `date_end`, `date_before`, `date_after`. Format: `yyyy-mm-dd`.", # noqa: E501 + ] = None, + shipment_date_filter: Annotated[ + str | None, + "Specify the shipment date filter for sales orders. Use variants such as 'shipment_date_start', 'shipment_date_end', 'shipment_date_before', and 'shipment_date_after' in 'yyyy-mm-dd' format.", # noqa: E501 + ] = None, + sales_order_status: Annotated[ + str | None, + "Filter sales orders by their status. Allowed values: draft, open, invoiced, partially_invoiced, void, and overdue.", # noqa: E501 + ] = None, + filter_by_customer_id: Annotated[ + str | None, + "Filter sales orders by specific customer ID. Retrieves orders associated with a customer for CRM and reporting.", # noqa: E501 + ] = None, + sales_representative_id: Annotated[ + str | None, + "Filter sales orders by specific sales representative ID for tracking and reporting purposes.", # noqa: E501 + ] = None, + sales_order_ids: Annotated[ + str | None, + "Comma-separated list of sales order IDs to filter results. Maximum length is 200 characters.", # noqa: E501 + ] = None, + last_modified_time: Annotated[ + str | None, + "Specify the last modified time of the sales order to filter results. Use the format 'yyyy-mm-dd'.", # noqa: E501 + ] = None, + response_format: Annotated[ + str | None, + "Specifies the format for sales order details. Must be one of: json, csv, xml, xls, xlsx, pdf, jhtml, or html. Default is json.", # noqa: E501 + ] = None, + custom_view_id: Annotated[ + str | None, "ID of the custom view to filter sales orders based on predefined criteria." + ] = None, + deal_crm_potential_id: Annotated[ + int | None, + "Potential ID of a Deal in CRM. Used to filter sales orders associated with a specific deal.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, + "Specify the page number for retrieving paginated sales order results. Default is 1 for the first page.", # noqa: E501 + ] = 1, + max_sales_orders_per_page: Annotated[ + int | None, + "Specify the maximum number of sales order records to return per page. Default is 200 for optimal performance and memory usage.", # noqa: E501 + ] = 200, + enable_printing: Annotated[ + bool | None, + "Enable printing of the exported PDF. Use when 'accept' is set to 'pdf' and 'salesorder_ids' includes values.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_sales_orders'."]: + """Retrieve a list of all sales orders. + + Use this tool to get a complete list of sales orders. It helps in managing and reviewing sales transactions efficiently.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "sort_column": sort_column, + "search_text": cross_field_search_text, + "filter_by": filter_sales_order_by_status, + "salesorder_number": filter_by_sales_order_number, + "item_name": filter_by_item_name, + "item_id": filter_by_item_id, + "item_description": filter_by_item_description, + "reference_number": filter_by_reference_number, + "customer_name": customer_name_filter, + "total": filter_by_total, + "date": creation_date_filter, + "shipment_date": shipment_date_filter, + "status": sales_order_status, + "customer_id": filter_by_customer_id, + "salesperson_id": sales_representative_id, + "salesorder_ids": sales_order_ids, + "last_modified_time": last_modified_time, + "accept": response_format, + "print": enable_printing, + "customview_id": custom_view_id, + "zcrm_potential_id": deal_crm_potential_id, + "page": page_number, + "per_page": max_sales_orders_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_sales_order_with_custom_field( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_api_name: Annotated[ + str | None, + "The API name of the unique custom field used to identify the sales order to update or create. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + unique_custom_field_value: Annotated[ + str | None, + "The unique value of the custom field used to retrieve and update a specific sales order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + allow_creation_if_not_found: Annotated[ + bool | None, + "Set to true to create a new sales order if the unique custom field value is not found. Complete details are required for creation. 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_sales_order_using_custom_field'." +]: + """Update or create a sales order using a custom field. + + Use a custom field's unique value to update an existing sales order or create a new one if the order does not exist and the required details are provided. This tool is useful when managing sales orders using specific identifiers in Zoho Books. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATESALESORDERWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESALESORDERWITHCUSTOMFIELD_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["UPDATESALESORDERWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorders".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESALESORDERWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": unique_custom_field_api_name, + "X-Unique-Identifier-Value": unique_custom_field_value, + "X-Upsert": allow_creation_if_not_found, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_sales_order_in_zoho_books( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization to which the sales order belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_id: Annotated[ + str | None, + "Unique identifier of the sales order to update in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + total_number_of_files: Annotated[ + int | None, + "Specify the total number of files to be attached to the sales order update. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + attach_document: Annotated[ + str | None, + "A document to be attached to the sales order. Provide the file path or URL as a string. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to TRUE to ignore auto-generation of the sales order number. This requires manually entering the number. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + allow_email_sending: Annotated[ + bool | None, + "Determine if the updated sales order can be sent via email. 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_sales_order'."]: + """Update details of an existing sales order in Zoho Books. + + Use this tool to update the details of an existing sales order in Zoho Books. It also allows for the deletion of line items by omitting them from the update request. + + 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[ + "UPDATESALESORDERINZOHOBOOKS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not sales_order_id: + missing_params.append(("sales_order_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESALESORDERINZOHOBOOKS_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["UPDATESALESORDERINZOHOBOOKS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESALESORDERINZOHOBOOKS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "ignore_auto_number_generation": ignore_auto_number_generation, + "can_send_in_mail": allow_email_sending, + "totalFiles": total_number_of_files, + "doc": attach_document, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_sales_order_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. This ID is used to specify the organization within Zoho Books whose sales order details need to be retrieved.", # noqa: E501 + ], + sales_order_id: Annotated[ + str, "Unique identifier of the sales order required to retrieve its details." + ], + output_format: Annotated[ + str | None, + "Specifies the format in which to receive the sales order details. Options include: json, csv, xml, xls, xlsx, pdf, jhtml, and html. Default is json.", # noqa: E501 + ] = None, + print_pdf: Annotated[ + bool | None, "Set to true to print the exported PDF of the sales order, otherwise false." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_sales_order'."]: + """Retrieve details of a specific sales order. + + This tool is used to get the details of a sales order from Zoho Books. It should be called when there's a need to look up information about a particular sales order, such as for verification or record-keeping purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "print": print_pdf, + "accept": output_format, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_sales_order( + context: ToolContext, + organization_id: Annotated[ + str, "Provide the ID of the organization for which the sales order will be deleted." + ], + sales_order_id: Annotated[ + str, "Unique identifier for the sales order to be deleted. Ensure it is not invoiced." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_sales_order'."]: + """Delete an existing sales order. + + Use this tool to delete an existing sales order by its ID. It cannot delete invoiced sales orders.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_sales_order_custom_fields( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization associated with the sales order. This is required to identify which organization's sales order needs updating. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_id: Annotated[ + str | None, + "Unique identifier for the sales order to be updated. 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_salesorder_customfields'."]: + """Update custom fields in existing sales orders efficiently. + + Call this tool to update the value of custom fields in existing sales orders when you need to modify order details. + + 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[ + "UPDATESALESORDERCUSTOMFIELDS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not sales_order_id: + missing_params.append(("sales_order_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESALESORDERCUSTOMFIELDS_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["UPDATESALESORDERCUSTOMFIELDS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorder/{salesorder_id}/customfields".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESALESORDERCUSTOMFIELDS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def open_sales_order( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization where the sales order is to be marked as open." + ], + sales_order_id: Annotated[ + str, "Unique identifier of the sales order to mark as open in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_sales_order_as_open'."]: + """Mark a draft sales order as open in Zoho Books. + + Use this tool to change the status of a draft sales order to open in Zoho Books. This is useful when a sales order needs to be moved from draft status to active status, indicating it's ready for further processing.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/status/open".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_sales_order_as_void( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_id: Annotated[ + str | None, + "Unique identifier for the specific sales order to be marked as void. 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 'mark_sales_order_as_void'."]: + """Mark a sales order as void in Zoho Books. + + Use this tool to transition a specified sales order to a void status, effectively canceling it within Zoho Books. + + 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["MARKSALESORDERASVOID_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not sales_order_id: + missing_params.append(("sales_order_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["MARKSALESORDERASVOID_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["MARKSALESORDERASVOID_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/status/void".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["MARKSALESORDERASVOID_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_sales_order_sub_status( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique ID of the organization in Zoho Books. This ID is required to specify which organization's sales order needs an update.", # noqa: E501 + ], + sales_order_id: Annotated[str, "Unique identifier for the specific sales order to update."], + sales_order_status_code: Annotated[ + str, + "The unique code representing the new status for a sales order. This is required to update the status in Zoho Books.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update_sales_order_sub_status'."]: + """Update the sub status of a sales order in Zoho Books. + + This tool updates the sub status of a specified sales order in Zoho Books, identified by the sales order ID and the new status code. It should be called when you need to change the status of an existing sales order.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/substatus/{status_code}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + salesorder_id=sales_order_id, + status_code=sales_order_status_code, + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def email_sales_order_to_customer( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization for which the sales order is being emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_id: Annotated[ + str | None, + "Provide the unique identifier of the sales order to be emailed to the customer. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_identifier: Annotated[ + str | None, + "Unique identifier of the sales order to be emailed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_attachments: Annotated[ + str | None, + "A list of file paths or URLs for attachments to include with the sales order email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + file_name: Annotated[ + str | None, + "Specify the name of the file to be attached to the email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + include_sales_order_attachment: Annotated[ + bool | None, + "Specify true to include the sales order attachment in the email, or false to exclude it. 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 'email_sales_order'."]: + """Email a sales order to a customer. + + Send an email containing the sales order to the customer, with optional custom content. If no content is provided, the default email content will be used. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "EMAILSALESORDERTOCUSTOMER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not sales_order_identifier: + missing_params.append(("sales_order_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["EMAILSALESORDERTOCUSTOMER_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["EMAILSALESORDERTOCUSTOMER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + salesorder_id=sales_order_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EMAILSALESORDERTOCUSTOMER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "salesorder_id": sales_order_identifier, + "attachments": sales_order_attachments, + "send_attachment": include_sales_order_attachment, + "file_name": file_name, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_sales_order_email_content( + context: ToolContext, + organization_id: Annotated[ + str, + "ID of the organization in Zoho Books for which the sales order email content is required.", + ], + sales_order_id: Annotated[ + str, "Unique identifier of the sales order to retrieve its email content." + ], + email_template_id: Annotated[ + str | None, + "Optional. ID of the email template for retrieving specific email content. If not provided, defaults will be used.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_sales_order_email'."]: + """Retrieve email content for a specific sales order. + + This tool is used to get the email content associated with a particular sales order, identified by its sales order ID. Use it when you need to view or analyze the email details of a sales order in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "email_template_id": email_template_id, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def submit_sales_order_for_approval( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization in Zoho Books where the sales order is submitted." + ], + sales_order_id: Annotated[ + str, "Unique identifier of the sales order to be submitted for approval." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit_sales_order'."]: + """Submit a sales order for approval in Zoho Books. + + Use this tool to submit a sales order for approval in the Zoho Books system by providing the sales order ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/submit".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def approve_sales_order( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization in Zoho Books required for approving a sales order." + ], + sales_order_id: Annotated[str, "The unique identifier for the sales order to be approved."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'approve_sales_order'."]: + """Approve a specified sales order in Zoho Books. + + Use this tool to approve a particular sales order within the Zoho Books system. This is typically called when a sales order needs to be confirmed and finalized.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/approve".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def export_sales_orders_pdf( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization whose sales orders will be exported as a PDF. This ID is required to access and retrieve the sales order data from Zoho Books.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'bulk_export_sales_orders_as_pdf'."]: + """Export sales orders as a single PDF document. + + Use this tool to export up to 25 sales orders into a single PDF file from Zoho Books. It is useful for generating and retrieving sales documentation in bulk for reporting or archiving.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/pdf".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def export_print_sales_orders( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization whose sales orders you want to export and print as PDFs." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'bulk_print_sales_orders'."]: + """Export and print sales orders as PDFs. + + Exports up to 25 sales orders as PDF files for printing. This tool is used to generate printable documents of sales orders in batch format.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/print".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_sales_order_billing_address( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization associated with the sales order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_identifier: Annotated[ + str | None, + "Unique identifier of the sales order to update the billing address for. 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_sales_order_billing_address'." +]: + """Updates the billing address for a specific sales order. + + + + 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[ + "UPDATESALESORDERBILLINGADDRESS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not sales_order_identifier: + missing_params.append(("sales_order_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESALESORDERBILLINGADDRESS_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["UPDATESALESORDERBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/address/billing".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + salesorder_id=sales_order_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESALESORDERBILLINGADDRESS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_shipping_address_sales_order( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The ID of the organization in Zoho Books to update the shipping address for the sales order. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_identifier: Annotated[ + str | None, + "Unique identifier of the sales order to be updated. 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_sales_order_shipping_address'." +]: + """Update the shipping address for a specific sales order. + + This tool updates the shipping address for a specific sales order in Zoho Books. It should be called when there's a need to modify the delivery location of an existing order. + + 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[ + "UPDATESHIPPINGADDRESSSALESORDER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not sales_order_identifier: + missing_params.append(("sales_order_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESHIPPINGADDRESSSALESORDER_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["UPDATESHIPPINGADDRESSSALESORDER_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/address/shipping".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + salesorder_id=sales_order_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESHIPPINGADDRESSSALESORDER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_sales_order_templates( + context: ToolContext, + organization_id: Annotated[ + str, + "A string representing the ID of the organization. Required to specify which organization's sales order templates to retrieve.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_sales_order_templates'."]: + """Retrieve all sales order PDF templates from Zoho Books. + + Use this tool to get a list of all available sales order PDF templates in Zoho Books. This is helpful when you need to view or manage your sales order templates.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/templates".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_sales_order_template( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization associated with the sales order." + ], + sales_order_id: Annotated[ + str, "Unique identifier for the sales order to be updated with a new PDF template." + ], + sales_order_template_id: Annotated[ + str, "Unique identifier of the sales order template to update." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update_sales_order_template'."]: + """Update the PDF template for a sales order. + + This tool updates the PDF template associated with a specific sales order. Use it when you need to change the template for an existing sales order.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/templates/{template_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + salesorder_id=sales_order_id, + template_id=sales_order_template_id, + ), + method="PUT", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_sales_order_attachment( + context: ToolContext, + organization_id: Annotated[str, "The unique ID of the organization in Zoho Books."], + sales_order_id: Annotated[ + str, "Unique identifier of the sales order to retrieve the attachment for." + ], + require_preview_of_sales_order: Annotated[ + bool | None, + "Specify whether a preview of the Sales Order is required. Use True for preview, False for no preview.", # noqa: E501 + ] = None, + require_inline_response: Annotated[ + bool | None, + "Set to true if an inline response is needed, displaying directly in the browser.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_sales_order_attachment'."]: + """Retrieve the file attached to a specific sales order. + + Use this tool to get the file attached to a sales order in Zoho Books by providing the sales order ID. It returns the file associated with the specified order.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "preview": require_preview_of_sales_order, + "inline": require_inline_response, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def attach_file_to_sales_order( + context: ToolContext, + organization_id: Annotated[str, "Unique identifier for the organization in Zoho Books."], + sales_order_identifier: Annotated[ + str, "Unique identifier of the sales order to which the file will be attached." + ], + file_to_attach: Annotated[ + str | None, "Path or identifier of the file to be attached to the sales order." + ] = None, + document_file_path: Annotated[ + str | None, "Path to the document file that needs to be attached to the sales order." + ] = None, + number_of_files: Annotated[ + int | None, "Specify the total number of files to be attached to the sales order." + ] = None, + document_identifiers: Annotated[ + str | None, + "A string representing the IDs of the documents to attach. Comma-separated for multiple IDs.", # noqa: E501 + ] = None, + allow_sending_file_in_mail: Annotated[ + bool | None, "Boolean indicating if the file can be sent in mail. True allows sending." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'add_sales_order_attachment'."]: + """Attach a file to a specific sales order in Zoho Books. + + This tool is used to attach a file to a specific sales order in Zoho Books. It should be called when you need to upload and associate a document with a sales order for tracking or record-keeping purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + salesorder_id=sales_order_identifier, + ), + method="POST", + params=remove_none_values({ + "organization_id": organization_id, + "attachment": file_to_attach, + "can_send_in_mail": allow_sending_file_in_mail, + "doc": document_file_path, + "totalFiles": number_of_files, + "document_ids": document_identifiers, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def set_sales_order_attachment_preference( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization for which you want to update the attachment preference.", + ], + sales_order_id: Annotated[str, "Unique identifier of the sales order to update."], + allow_attachment_in_email: Annotated[ + bool, + "Indicate if the file can be sent in the email. Set to true to allow, false to prevent.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'update_attachment_preference1'."]: + """Sets attachment preference for sales order emails. + + Use this tool to set whether an attached file should be sent when emailing a sales order. Call this when you need to update the attachment settings on a specific sales order.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="PUT", + params=remove_none_values({ + "organization_id": organization_id, + "can_send_in_mail": allow_attachment_in_email, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_sales_order_attachment( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization whose sales order attachment is to be deleted." + ], + sales_order_id: Annotated[ + str, "Unique identifier for the sales order from which the attachment will be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_sales_order_attachment'."]: + """Delete an attached file from a sales order in Zoho Books. + + Call this tool to remove an attached file from a specified sales order in Zoho Books. Useful for managing and updating records by deleting unnecessary or outdated attachments.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/attachment".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_sales_order_comments( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization for which to retrieve sales order comments." + ], + sales_order_id: Annotated[ + str, "Unique identifier of the sales order to retrieve comments and history for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_sales_order_comments'."]: + """Retrieve the history and comments of a sales order. + + Use this tool to obtain all comments and the complete history associated with a specific sales order when needing detailed insights or updates.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_sales_order_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_id: Annotated[ + str | None, + "Unique identifier of the sales order to which the comment 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_sales_order_comment'."]: + """Add a comment to a sales order in Zoho Books. + + This tool is used to add a comment to a specific sales order in Zoho Books. It should be called when you need to leave additional remarks or notes on a sales order. + + 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["ADDSALESORDERCOMMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not sales_order_id: + missing_params.append(("sales_order_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDSALESORDERCOMMENT_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["ADDSALESORDERCOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), salesorder_id=sales_order_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDSALESORDERCOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_sales_order_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_order_id: Annotated[ + str | None, + "Unique identifier of the sales order to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + comment_id: Annotated[ + str | None, + "Unique identifier of the comment associated with the sales order that needs to be updated. 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_sales_order_comment'."]: + """Update an existing comment on a sales order. + + + + 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[ + "UPDATESALESORDERCOMMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not sales_order_id: + missing_params.append(("sales_order_id", "path")) + if not comment_id: + missing_params.append(("comment_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESALESORDERCOMMENT_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["UPDATESALESORDERCOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + salesorder_id=sales_order_id, + comment_id=comment_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESALESORDERCOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.salesorders.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_sales_order_comment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization. This ID is required to specify which organization's sales order comment needs to be deleted.", # noqa: E501 + ], + sales_order_id: Annotated[ + str, "Unique identifier of the sales order to delete the comment from." + ], + comment_identifier: Annotated[str, "Unique identifier of the comment to delete."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_sales_order_comment'."]: + """Delete a comment from a sales order in Zoho Books. + + Use this tool to remove a comment from a specific sales order in Zoho Books by providing the sales order ID and the comment ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesorders/{salesorder_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + salesorder_id=sales_order_id, + comment_id=comment_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_sales_receipt( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Unique identifier for the organization needed to create the sales receipt. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to ignore automatic sales receipt number generation, requiring manual entry of the receipt number. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + send_receipt_via_email: Annotated[ + bool | None, + "Set to true to send the sales receipt to the customer via email. 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 'create_sales_receipt'."]: + """Create a sales receipt for immediate payment transactions. + + + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATESALESRECEIPT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATESALESRECEIPT_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["CREATESALESRECEIPT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesreceipts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATESALESRECEIPT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "ignore_auto_number_generation": ignore_auto_number_generation, + "can_send_in_mail": send_receipt_via_email, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_sales_receipts( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization. Required to list sales receipts." + ], + search_receipt_by_number: Annotated[ + str | None, + "Search for receipts using their unique number. Supports 'startswith' and 'contains' filters. Max length: 100 characters.", # noqa: E501 + ] = None, + search_by_item_name: Annotated[ + str | None, + "Search sales receipts by item name using 'startswith' or 'contains' variants. Maximum length is 100 characters.", # noqa: E501 + ] = None, + sort_by_column: Annotated[ + str | None, + "Specify the column to sort sales receipts by. Options: customer_name, receipt_number, date, total, created_time.", # noqa: E501 + ] = None, + filter_sales_receipts_by_status: Annotated[ + str | None, + "Filter sales receipts based on their status. Options include date ranges like 'ThisWeek', and statuses like 'Status.Draft'.", # noqa: E501 + ] = None, + customer_identifier: Annotated[ + str | None, + "Filter sales receipts by specific customer identifier. Provide the unique ID of the customer to retrieve their sales receipts.", # noqa: E501 + ] = None, + date_filter: Annotated[ + str | None, + "Filter sales receipts by date using variants like date_start, date_end, date_before, and date_after. Use yyyy-mm-dd format.", # noqa: E501 + ] = None, + total_filter_options: Annotated[ + float | None, + "Filter sales receipts using range operators like total_start, total_end, total_less_than, and total_greater_than. Expects a number specifying the total amount.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, + "Specify the page number for retrieving paginated sales receipt results. Defaults to 1.", + ] = 1, + max_records_per_page: Annotated[ + int | None, + "Specify the maximum number of sales receipt records to return per page. Default is 200.", + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_sales_receipts'."]: + """Retrieve a list of all sales receipts. + + Use this tool to obtain a comprehensive list of all sales receipts. It should be called when there's a need to review or analyze sales transaction records.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesreceipts".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "receipt_number": search_receipt_by_number, + "item_name": search_by_item_name, + "sort_column": sort_by_column, + "filter_by": filter_sales_receipts_by_status, + "customer_id": customer_identifier, + "date": date_filter, + "total": total_filter_options, + "page": page_number, + "per_page": max_records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_sales_receipt( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization in Zoho Books. It is required to specify which organization's sales receipt needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + sales_receipt_identifier: Annotated[ + str | None, + "Unique identifier for the sales receipt to be updated. This is required to specify which receipt to modify. 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_sales_receipt'."]: + """Update an existing sales receipt in Zoho Books. + + This tool is used to update details of an existing sales receipt in Zoho Books. It should be called when modifications to sales receipt data are required, such as changing amounts, dates, or other relevant information. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATESALESRECEIPT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not sales_receipt_identifier: + missing_params.append(("sales_receipt_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESALESRECEIPT_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["UPDATESALESRECEIPT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesreceipts/{sales_receipt_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + sales_receipt_id=sales_receipt_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESALESRECEIPT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_sales_receipt_details( + context: ToolContext, + organization_identifier: Annotated[ + str, "ID of the organization for which the sales receipt is being retrieved." + ], + sales_receipt_id: Annotated[ + str, + "The unique identifier for the sales receipt to be retrieved. Required for fetching the specific sales receipt details.", # noqa: E501 + ], + output_format: Annotated[ + str | None, + "Specifies the format in which to retrieve the sales receipt details. Options are 'json', 'pdf', or 'html'. Default is 'json'.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_sales_receipt'."]: + """Retrieve the details of a sales receipt. + + This tool fetches the specific details of a sales receipt using the provided sales receipt ID. It should be called when detailed information about a particular sales receipt is needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesreceipts/{sales_receipt_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), sales_receipt_id=sales_receipt_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "accept": output_format, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_sales_receipt( + context: ToolContext, + organization_id: Annotated[str, "The unique ID of the organization in Zoho Books."], + sales_receipt_id: Annotated[str, "The unique identifier for the sales receipt to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_sales_receipt'."]: + """Delete an existing sales receipt in Zoho Books. + + This tool deletes a specified sales receipt from Zoho Books. It should be used when you need to permanently remove a sales receipt by its ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/salesreceipts/{sales_receipt_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), sales_receipt_id=sales_receipt_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.invoices.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def email_sales_receipt_to_customer( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + sales_receipt_identifier: Annotated[ + str | None, + "The unique identifier of the sales receipt to be emailed to the customer. It must be a string. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + attach_pdf: Annotated[ + bool | None, + "Set to true to send the sales receipt PDF with the email. 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 'email_sales_receipt'."]: + """Email a sales receipt to the customer. + + Use this tool to send a sales receipt via email to a specific customer. It should be called when you need to deliver the sales receipt directly to the customer. + + 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[ + "EMAILSALESRECEIPTTOCUSTOMER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not sales_receipt_identifier: + missing_params.append(("sales_receipt_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["EMAILSALESRECEIPTTOCUSTOMER_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["EMAILSALESRECEIPTTOCUSTOMER_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/salesreceipts/{sales_receipt_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + sales_receipt_id=sales_receipt_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EMAILSALESRECEIPTTOCUSTOMER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"attach_pdf": attach_pdf}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_project_task( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization for which the task is being added. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + project_identifier: Annotated[ + str | None, + "Unique identifier of the project in Zoho Books. 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_task'."]: + """Add a task to a specific project. + + Use this tool to add a task to a specified project in Zoho Books. It is suitable when you need to organize tasks within a project and track them through Zoho's project management system. + + 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["ADDPROJECTTASK_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not project_identifier: + missing_params.append(("project_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["ADDPROJECTTASK_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["ADDPROJECTTASK_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/{project_id}/tasks".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), project_id=project_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDPROJECTTASK_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_project_tasks( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. This is required to specify which organization's project tasks to retrieve.", # noqa: E501 + ], + project_unique_id: Annotated[str, "Unique identifier for the project to fetch tasks."], + fetch_page_number: Annotated[ + int | None, "The page number of results to retrieve. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Specify the number of task records to fetch per page. Defaults to 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_tasks'."]: + """Retrieve a list of tasks for a specified project. + + Use this tool to obtain a list of tasks added to a specific project in Zoho Books. It should be called when you need detailed task information for project management or oversight.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/tasks".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), project_id=project_unique_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": fetch_page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_project_task( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books to identify the context for the task update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + project_identifier: Annotated[ + str | None, + "Unique identifier of the project in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + task_identifier: Annotated[ + str | None, + "Unique identifier of the task to be updated. 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_task'."]: + """Update the details of a project task. + + Use this tool to update the details of a specific task within a project in Zoho Books. It should be called when you need to change task information such as its status, due date, or other attributes. + + 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["UPDATEPROJECTTASK_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not project_identifier: + missing_params.append(("project_identifier", "path")) + if not task_identifier: + missing_params.append(("task_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEPROJECTTASK_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["UPDATEPROJECTTASK_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/{project_id}/tasks/{task_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_identifier, + task_id=task_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPROJECTTASK_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_task_details( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + project_id: Annotated[str, "Unique identifier of the project."], + task_unique_identifier: Annotated[ + str, "The unique identifier for the task to retrieve details for from Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_task'."]: + """Retrieve detailed information about a specific task in a project. + + This tool should be called to obtain comprehensive details about a particular task within a project. It helps in understanding task specifics by providing relevant task data from Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/tasks/{task_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_id, + task_id=task_unique_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_project_task( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique ID of the organization to which the task belongs." + ], + project_identifier: Annotated[ + str, "Unique identifier for the project from which a task will be deleted." + ], + task_identifier: Annotated[str, "Unique identifier of the task to be deleted in the project."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_task'."]: + """Remove a task from a specific project in Zoho Books. + + Call this tool to delete a specified task from a project using Zoho Books API. Use it when you need to manage project tasks and remove any that are no longer relevant.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/{project_id}/tasks/{task_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + project_id=project_identifier, + task_id=task_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_associated_tax( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization in Zoho Books where the tax will be created. 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 'create_tax'."]: + """Create and associate a tax with an item. + + This tool creates a tax that can be added to an item within the Zoho Books system. It is used when a new tax needs to be defined and linked to specific goods or services. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEASSOCIATEDTAX_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEASSOCIATEDTAX_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["CREATEASSOCIATEDTAX_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/taxes".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEASSOCIATEDTAX_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_taxes( + context: ToolContext, + organization_id: Annotated[str, "Unique ID of the organization to list taxes for."], + page_number: Annotated[ + int | None, "Page number of the tax list to retrieve. Defaults to 1 if not specified." + ] = 1, + records_per_page: Annotated[ + int | None, + "The number of tax records to retrieve per page. Defaults to 200 if not specified.", + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_taxes'."]: + """Retrieve a list of simple and compound taxes. + + Use this tool to get a list of simple and compound taxes available in the system, with options for pagination.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxes".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_tax_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique identifier for the organization that owns the tax to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + tax_identifier: Annotated[ + str | None, + "Unique identifier of the tax to update. 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_tax'."]: + """Update the details of a specified tax. + + Use this tool to update the details of a simple or compound tax by providing the tax ID. + + 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["UPDATETAXDETAILS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not tax_identifier: + missing_params.append(("tax_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATETAXDETAILS_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["UPDATETAXDETAILS_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/taxes/{tax_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), tax_id=tax_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATETAXDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_tax_details( + context: ToolContext, + organization_id: Annotated[str, "The ID of the organization to retrieve tax details from."], + tax_identifier: Annotated[str, "Unique identifier for retrieving specific tax details."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_tax'."]: + """Retrieve the details of a specific tax. + + Use this tool to obtain information about a specific simple or compound tax by providing the tax ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxes/{tax_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), tax_id=tax_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_tax( + context: ToolContext, + organization_id: Annotated[ + str, + "The ID of the organization within Zoho Books. This is required to specify which organization's tax entry to delete.", # noqa: E501 + ], + tax_identifier: Annotated[str, "Unique identifier of the tax to be deleted in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_tax'."]: + """Delete a simple or compound tax in Zoho Books. + + Use this tool to remove a specific tax, whether simple or compound, from the Zoho Books system. This is useful when managing taxes and ensuring only relevant ones are active.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxes/{tax_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), tax_id=tax_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def retrieve_tax_group_details( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization in Zoho Books to get the tax group details for." + ], + tax_group_identifier: Annotated[str, "Unique identifier for the tax group in Zoho Books."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_tax_group'."]: + """Retrieve details of a specific tax group. + + Use this to obtain information about a specific tax group by its ID in Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxgroups/{tax_group_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), tax_group_id=tax_group_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_tax_group_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique ID of the organization in Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + tax_group_identifier: Annotated[ + str | None, + "Unique identifier of the tax group to be updated. 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_tax_group'."]: + """Update details of a specific tax group in Zoho Books. + + This tool updates the details of a tax group in Zoho Books using the provided tax group ID. It should be called when changes are needed to the tax group's configuration. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATETAXGROUPDETAILS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not tax_group_identifier: + missing_params.append(("tax_group_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATETAXGROUPDETAILS_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["UPDATETAXGROUPDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/taxgroups/{tax_group_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), tax_group_id=tax_group_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATETAXGROUPDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_tax_group( + context: ToolContext, + organization_identifier: Annotated[ + str, "The unique identifier for the organization in Zoho Books." + ], + tax_group_identifier: Annotated[ + str, + "Unique identifier of the tax group to be deleted. Ensure it's not associated with active transactions to proceed.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_tax_group'."]: + """Delete a tax group if not associated with transactions. + + Use this tool to delete a tax group from Zoho Books. Note that tax groups associated with transactions cannot be deleted.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxgroups/{tax_group_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), tax_group_id=tax_group_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_tax_group( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization within Zoho Books. This is required to create a tax group. 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 'create_tax_group'."]: + """Create a tax group with multiple associated taxes. + + This tool calls the Zoho Books API to create a tax group, allowing you to associate multiple taxes into a single group. Use this tool when you need to manage and apply tax groups for accounting purposes. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATETAXGROUP_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATETAXGROUP_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["CREATETAXGROUP_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/taxgroups".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATETAXGROUP_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_tax_authority( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the tax authority is to be created. 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 'create_tax_authority'."]: + """Create a tax authority in Zoho Books. + + Use this tool to create a new tax authority in Zoho Books. Suitable for financial administrators managing tax compliance. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATETAXAUTHORITY_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATETAXAUTHORITY_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["CREATETAXAUTHORITY_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/taxauthorities".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATETAXAUTHORITY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_tax_authorities( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which to retrieve tax authorities." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_tax_authorities'."]: + """Retrieve the list of tax authorities. + + Use this tool to obtain a list of all tax authorities, which can be helpful for managing tax-related settings or compliance.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxauthorities".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_tax_authority_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization for which the tax authority details need to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + tax_authority_identifier: Annotated[ + str | None, + "Unique identifier of the tax authority to be updated. 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_tax_authority'."]: + """Update details of a tax authority. + + Use this tool to update information for a specific tax authority. Ideal for modifications to existing records. + + 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[ + "UPDATETAXAUTHORITYDETAILS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not tax_authority_identifier: + missing_params.append(("tax_authority_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATETAXAUTHORITYDETAILS_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["UPDATETAXAUTHORITYDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/taxauthorities/{tax_authority_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + tax_authority_id=tax_authority_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATETAXAUTHORITYDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_tax_authority_details( + context: ToolContext, + organization_id: Annotated[ + str, "Provide the ID of the organization to retrieve tax authority details." + ], + tax_authority_unique_id: Annotated[ + str, "Unique identifier of the tax authority to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_tax_authority'."]: + """Retrieve details of a specific tax authority. + + Use this tool to obtain information about a tax authority by providing its unique ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxauthorities/{tax_authority_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + tax_authority_id=tax_authority_unique_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_tax_authority( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization to identify which one the tax authority belongs to." + ], + tax_authority_identifier: Annotated[ + str, "The unique identifier for the tax authority to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_tax_authority'."]: + """Delete a specific tax authority. + + Use this tool to delete a tax authority when you need its removal confirmed.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxauthorities/{tax_authority_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + tax_authority_id=tax_authority_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_tax_exemption( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books for which the tax exemption is being created. 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 'create_tax_exemption'."]: + """Create a tax exemption in Zoho Books. + + Use this tool to create a tax exemption in Zoho Books when you need to apply tax exemptions for transactions or customers. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATETAXEXEMPTION_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATETAXEXEMPTION_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["CREATETAXEXEMPTION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/taxexemptions".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATETAXEXEMPTION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_tax_exemptions_list( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization whose tax exemptions are being requested." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_tax_exemptions'."]: + """Retrieve a list of tax exemptions from Zoho Books. + + Call this tool to get information about the current tax exemptions available in Zoho Books. It provides details on all tax exemptions configured in the system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxexemptions".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_tax_exemption_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier of the organization for which the tax exemption needs to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + tax_exemption_identifier: Annotated[ + str | None, + "Unique identifier for the tax exemption to be updated. 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_tax_exemption'."]: + """Update the details of a tax exemption. + + This tool updates the information of a specific tax exemption. It should be called when changes to tax exemption records are needed, such as modifying existing details. + + 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[ + "UPDATETAXEXEMPTIONDETAILS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not tax_exemption_identifier: + missing_params.append(("tax_exemption_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATETAXEXEMPTIONDETAILS_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["UPDATETAXEXEMPTIONDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/settings/taxexemptions/{tax_exemption_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + tax_exemption_id=tax_exemption_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATETAXEXEMPTIONDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_tax_exemption_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to access the organization's tax exemption details.", # noqa: E501 + ], + tax_exemption_identifier: Annotated[ + str, "The unique identifier for the tax exemption to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_tax_exemption'."]: + """Retrieve the details of a tax exemption using its ID. + + This tool retrieves details about a specific tax exemption identified by its ID. It is useful for understanding exemption specifics within financial settings.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxexemptions/{tax_exemption_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + tax_exemption_id=tax_exemption_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_tax_exemption( + context: ToolContext, + organization_id: Annotated[str, "ID of the organization in Zoho Books."], + tax_exemption_identifier: Annotated[ + str, "Unique identifier of the tax exemption to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_tax_exemption'."]: + """Delete a specific tax exemption from Zoho Books. + + Use this tool to delete a tax exemption in Zoho Books when you need to remove a specific exemption entry.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/settings/taxexemptions/{tax_exemption_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + tax_exemption_id=tax_exemption_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def log_time_entries( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books. Required for logging time entries. 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 'create_time_entries'."]: + """Log time entries in Zoho Books. + + Use this tool to log time entries for projects in Zoho Books. It should be called when you need to track time spent on project tasks. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["LOGTIMEENTRIES_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["LOGTIMEENTRIES_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["LOGTIMEENTRIES_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/timeentries".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["LOGTIMEENTRIES_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_time_entries( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The unique identifier for the organization. Required to retrieve time entries specific to this organization.", # noqa: E501 + ], + start_date_for_time_entries: Annotated[ + str | None, + "Date from which the time entries should start being fetched. Expected format is YYYY-MM-DD.", # noqa: E501 + ] = None, + end_date_for_time_entries: Annotated[ + str | None, "The end date for fetching logged time entries in YYYY-MM-DD format." + ] = None, + filter_time_entries_by: Annotated[ + str | None, + "Filter time entries by date or status. Use values like Date.Today, Date.ThisMonth, Status.Unbilled, etc.", # noqa: E501 + ] = None, + project_id: Annotated[ + str | None, "Search for time entries by specifying the project ID." + ] = None, + search_time_entries_by_user_id: Annotated[ + str | None, + "Search and filter time entries based on a specific user's ID. Provide the ID as a string.", + ] = None, + sort_time_entries_by: Annotated[ + str | None, + "Sort time entries by project name, task name, user name, log date, timer start time, or customer name.", # noqa: E501 + ] = None, + page_number_to_fetch: Annotated[ + int | None, "Page number to retrieve time entries from, starting at 1 by default." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to fetch per page. Defaults to 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_time_entries'."]: + """Retrieve all time entries with pagination. + + Call this tool to get a list of all time entries for projects, supporting pagination if needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/timeentries".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "from_date": start_date_for_time_entries, + "to_date": end_date_for_time_entries, + "filter_by": filter_time_entries_by, + "project_id": project_id, + "user_id": search_time_entries_by_user_id, + "sort_column": sort_time_entries_by, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_time_entries( + context: ToolContext, + organization_identifier: Annotated[ + str, "ID of the organization to identify which entity's time entries will be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_time_entries'."]: + """Delete time tracking entries from projects. + + Use this tool to delete time entries from projects in Zoho Books. It should be called when you need to remove specific time tracking records.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/timeentries".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_time_entry( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization to which the time entry belongs. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + time_entry_identifier: Annotated[ + str | None, + "Unique identifier of the existing time entry to update. 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_time_entry'."]: + """Updates an existing logged time entry. + + Use this tool to modify details of a previously logged time entry in Zoho Books. Ideal when adjustments or updates need to be made to existing time logs. + + 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["UPDATETIMEENTRY_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not time_entry_identifier: + missing_params.append(("time_entry_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATETIMEENTRY_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["UPDATETIMEENTRY_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/projects/timeentries/{time_entry_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + time_entry_id=time_entry_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATETIMEENTRY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_time_entry_details( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization for which the time entry details are requested." + ], + time_entry_identifier: Annotated[ + str, "Unique identifier of the time entry to retrieve details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_time_entry'."]: + """Retrieve details of a specific time entry. + + Use this tool to get detailed information about a specific time entry by providing the time entry ID. It's useful for tracking and managing project time entries.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/timeentries/{time_entry_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + time_entry_id=time_entry_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_logged_time_entry( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier of the organization from which the time entry will be deleted." + ], + time_entry_identifier: Annotated[ + str, "Unique identifier for the logged time entry to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_time_entry'."]: + """Delete a specific logged time entry. + + Use this tool to delete a logged time entry from a project by specifying the time entry ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/timeentries/{time_entry_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + time_entry_id=time_entry_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def start_time_tracking( + context: ToolContext, + organization_identifier: Annotated[ + str, "ID of the organization for which the time tracking is to be started." + ], + time_entry_identifier: Annotated[ + str, "Unique identifier for the specific time entry to be tracked." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'start_entry_timer'."]: + """Initiate time tracking for a specific entry. + + Use this tool to start tracking time for a given time entry in Zoho Books. It should be called when you need to begin or resume tracking time on a project task.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/timeentries/{time_entry_id}/timer/start".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + time_entry_id=time_entry_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def stop_time_tracking( + context: ToolContext, + organization_id: Annotated[ + str, + "ID of the organization where the time entry is being stopped. This ID is required to specify which organization's time tracking should be affected.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'stop_entry_timer'."]: + """Stop the timer for a time entry. + + Use this tool to stop tracking time for a specific task or activity, such as when taking a break or ending a work session.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/timeentries/timer/stop".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.projects.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_current_running_timer( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization whose running timer is being retrieved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_running_timer'."]: + """Retrieve the current running timer for a user. + + Use this tool to get information about the current running timer for personal time tracking in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/projects/timeentries/runningtimer/me".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_organization_user( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization in Zoho Books where the user will be created. 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 'create_user'."]: + """Create a user for your organization in Zoho Books. + + This tool facilitates the creation of a new user within your organization using Zoho Books' services. It should be called when you need to register a new user in your organization's Zoho Books account. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEORGANIZATIONUSER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEORGANIZATIONUSER_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["CREATEORGANIZATIONUSER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/users".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEORGANIZATIONUSER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_organization_users( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization to retrieve its users. Provide a valid organization ID as a string.", # noqa: E501 + ], + user_status_filter: Annotated[ + str | None, + "Filter users based on their status. Options: Status.All, Status.Active, Status.Inactive, Status.Invited, Status.Deleted.", # noqa: E501 + ] = None, + sort_users_by_column: Annotated[ + str | None, + "Specify the attribute to sort users by. Allowed values are name, email, user_role, and status.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, + "Page number to be retrieved, with default being 1. Specify to navigate through pages.", + ] = 1, + records_per_page: Annotated[ + int | None, "Number of user records to retrieve per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_users'."]: + """Retrieve the list of all users in the organization. + + Use this tool to get an updated list of all users within the organization. Ideal for tasks needing user information or management.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/users".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "filter_by": user_status_filter, + "sort_column": sort_users_by_column, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_user_details( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization whose user's details are being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + user_identifier: Annotated[ + str | None, + "Unique identifier of the user to be updated in Zoho Books. 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_user'."]: + """Update user details in Zoho Books. + + Use this tool to update the information of an existing user in Zoho Books. Call it when changes to a user's profile are needed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEUSERDETAILS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not user_identifier: + missing_params.append(("user_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEUSERDETAILS_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["UPDATEUSERDETAILS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/users/{user_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), user_id=user_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEUSERDETAILS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_user_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books. This is required to specify the organization context for API calls.", # noqa: E501 + ], + user_unique_identifier: Annotated[ + str, "A unique string that identifies the user in Zoho Books." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_user'."]: + """Retrieve detailed information about a specific user in Zoho Books. + + This tool fetches the details of a user from Zoho Books using their user ID. It should be called when user information such as name, email, or role is required.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/users/{user_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), user_id=user_unique_identifier + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def remove_user_from_organization( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier of the organization from which the user will be deleted." + ], + user_unique_identifier: Annotated[ + str, "Unique identifier of the user to be deleted from the organization." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_user'."]: + """Delete a user from the organization. + + This tool removes a specified user from the organization in Zoho Books. It should be called when there is a need to delete a user's access or association with the organization.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/users/{user_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), user_id=user_unique_identifier + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_current_user_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization in Zoho Books to retrieve the current user details.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_current_user'."]: + """Retrieve details of the current user from Zoho Books. + + Use this tool to get information about the currently authenticated user in Zoho Books. Ideal for scenarios where user-specific data is needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/users/me".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def send_invitation_email( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier of the organization in Zoho Books required to send the invitation.", + ], + user_unique_identifier: Annotated[ + str, "Unique identifier of the user to whom the invitation email will be sent." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'invite_user'."]: + """Send an invitation email to a user in Zoho Books. + + Use this tool to send an invitation email to a specific user by their user ID in Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/users/{user_id}/invite".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), user_id=user_unique_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def activate_inactive_user( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization for which the user will be reactivated. Ensure it matches the organization's records.", # noqa: E501 + ], + user_identifier: Annotated[str, "Unique identifier for the user to be activated."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_user_active'."]: + """Mark an inactive user as active. + + Use this tool to activate a user who is currently marked as inactive in the system.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/users/{user_id}/active".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), user_id=user_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.settings.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def deactivate_user_account( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization within Zoho Books to which the user belongs." + ], + user_unique_identifier: Annotated[ + str, "Provide the unique identifier of the user to be deactivated." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_user_inactive'."]: + """Deactivate a user's account in Zoho Books. + + Use this tool to mark an active user as inactive within Zoho Books. It is useful when needing to revoke access or deactivate an account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/users/{user_id}/inactive".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), user_id=user_unique_identifier + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_vendor_credit( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the vendor credit is being created. Must be a valid organization ID. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + bill_id: Annotated[ + str | None, + "Identifier of the bill associated with the vendor credit. Required for linking the credit to a specific transaction. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + ignore_auto_number_generation: Annotated[ + bool | None, + "Set to true to bypass auto number generation. A vendor credit number becomes mandatory when enabled. 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 'create_vendor_credit'."]: + """Create vendor credit for returns or adjustments. + + Use this tool to record new vendor credits for returned items, overpayments, or adjustments. Supports multi-currency, custom line items, taxes, and workflows. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEVENDORCREDIT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEVENDORCREDIT_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["CREATEVENDORCREDIT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorcredits".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEVENDORCREDIT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "ignore_auto_number_generation": ignore_auto_number_generation, + "bill_id": bill_id, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_vendor_credits( + context: ToolContext, + organization_id: Annotated[str, "The unique identifier for the organization in Zoho Books."], + vendor_credit_number_filter: Annotated[ + str | None, + "Filter vendor credits by specific vendor credit number. Supports partial matching with options like 'startswith' and 'contains'.", # noqa: E501 + ] = None, + filter_by_creation_date: Annotated[ + str | None, + "Filter vendor credits by creation date using yyyy-mm-dd format. Supports date_start, date_end, date_before, and date_after for range filtering.", # noqa: E501 + ] = None, + vendor_credit_status: Annotated[ + str | None, + "Filter vendor credits by their current status. Allowed values: 'open', 'closed', 'void', or 'draft'.", # noqa: E501 + ] = None, + total_amount_filter: Annotated[ + str | None, + "Filter vendor credits by total amount. Use variants: total_start, total_end, total_less_than, total_less_equals, total_greater_than, total_greater_equals.", # noqa: E501 + ] = None, + reference_number_filter: Annotated[ + str | None, + "Filter vendor credits by their reference number, supporting 'startswith' and 'contains' for partial matches.", # noqa: E501 + ] = None, + filter_by_vendor_name: Annotated[ + str | None, + "Filter vendor credits by vendor name, supporting partial matches with 'startswith' and 'contains'.", # noqa: E501 + ] = None, + filter_by_item_name: Annotated[ + str | None, + "Filter vendor credits by item name. Use 'startswith:' or 'contains:' as prefixes for partial matching.", # noqa: E501 + ] = None, + item_description_filter: Annotated[ + str | None, + "Filter vendor credits by item description. Supports partial matching with 'startswith' and 'contains'.", # noqa: E501 + ] = None, + filter_by_notes_content: Annotated[ + str | None, + "Filter vendor credits by notes content. Use partial matching with variants: notes_startswith or notes_contains.", # noqa: E501 + ] = None, + filter_by_custom_field: Annotated[ + str | None, + "Filter vendor credits by custom field values. Use 'custom_field_startswith' or 'custom_field_contains' for partial matching.", # noqa: E501 + ] = None, + filter_by_last_modified_time: Annotated[ + str | None, + "Filter vendor credits by last modified time using ISO 8601 format (yyyy-mm-ddThh:mm:ss-hh:mm).", # noqa: E501 + ] = None, + filter_by_customer_id: Annotated[ + int | None, + "Filter vendor credits by a specific customer ID to find credits associated with that customer. Retrieve customer IDs from the contacts API.", # noqa: E501 + ] = None, + filter_by_line_item_id: Annotated[ + int | None, + "Filter vendor credits by a specific line item ID to find credits containing the item.", + ] = None, + filter_by_item_id: Annotated[ + int | None, + "Filter vendor credits by a specific item ID. Use this to find vendor credits containing the item. Retrieve item IDs from the items API.", # noqa: E501 + ] = None, + filter_by_tax_id: Annotated[ + int | None, + "Filter vendor credits by specific tax ID to find credits with that tax applied. Tax IDs are retrieved from the taxes API.", # noqa: E501 + ] = None, + filter_by_status: Annotated[ + str | None, + "Filter vendor credits by status using predefined values: Status.All, Status.Open, Status.Draft, Status.Closed, Status.Void.", # noqa: E501 + ] = None, + search_text: Annotated[ + str | None, + "Enter text to search vendor credits by credit number, vendor name, and reference number.", + ] = None, + sort_by_column: Annotated[ + str | None, + "Specify which column to sort vendor credits by. Options: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time, reference_number.", # noqa: E501 + ] = None, + pagination_page_number: Annotated[ + int | None, "Specify the page number to retrieve results from for pagination. Default is 1." + ] = 1, + pagination_records_per_page: Annotated[ + int | None, + "Specify the number of vendor credit records to return per page. The default value is 200.", + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_vendor_credits'."]: + """Retrieve and filter vendor credits from Zoho Books. + + Retrieve a paginated list of vendor credits using various filtering, sorting, and search capabilities, such as by date, status, amount, vendor details, items, taxes, and custom fields.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "vendor_credit_number": vendor_credit_number_filter, + "date": filter_by_creation_date, + "status": vendor_credit_status, + "total": total_amount_filter, + "reference_number": reference_number_filter, + "customer_name": filter_by_vendor_name, + "item_name": filter_by_item_name, + "item_description": item_description_filter, + "notes": filter_by_notes_content, + "custom_field": filter_by_custom_field, + "last_modified_time": filter_by_last_modified_time, + "customer_id": filter_by_customer_id, + "line_item_id": filter_by_line_item_id, + "item_id": filter_by_item_id, + "tax_id": filter_by_tax_id, + "filter_by": filter_by_status, + "search_text": search_text, + "sort_column": sort_by_column, + "page": pagination_page_number, + "per_page": pagination_records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_vendor_credit( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique identifier of the organization in Zoho Books. Required to update vendor credit. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + vendor_credit_id: Annotated[ + str | None, + "The unique identifier for the vendor credit to be updated. This string is required to locate the specific credit. 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_vendor_credit'."]: + """Update an existing vendor credit in Zoho Books. + + Use this tool to update the details of a specific vendor credit in Zoho Books. Call this when modifications to vendor credits are needed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path, query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEVENDORCREDIT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not vendor_credit_id: + missing_params.append(("vendor_credit_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEVENDORCREDIT_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["UPDATEVENDORCREDIT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), vendor_credit_id=vendor_credit_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEVENDORCREDIT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_vendor_credit_details( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization whose vendor credit details are being requested.", # noqa: E501 + ], + vendor_credit_id: Annotated[ + str, "Unique identifier for the vendor credit to retrieve details." + ], + output_format: Annotated[ + str | None, + "Specify the format for vendor credit details. Options: json, xml, csv, xls, pdf, html, jhtml. Default is html.", # noqa: E501 + ] = None, + export_vendor_credit_pdf: Annotated[ + bool | None, + "Set to true to export the vendor credit as a PDF with default print options. Accepts 'true', 'false', 'on', 'off'.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_vendor_credit'."]: + """Retrieve details of a specific vendor credit. + + Use this tool to obtain detailed information about a vendor credit by providing the specific vendor credit ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), vendor_credit_id=vendor_credit_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "print": export_vendor_credit_pdf, + "accept": output_format, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_vendor_credit( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to specify which organization's vendor credit to delete.", # noqa: E501 + ], + vendor_credit_identifier: Annotated[ + str, "Unique identifier of the vendor credit to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_vendor_credit'."]: + """Delete a vendor credit by its ID. + + Use this tool to delete a specific vendor credit using its unique ID. This is typically required when a vendor credit is no longer valid or was added by mistake.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def open_vendor_credit_status( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization in Zoho Books whose vendor credit status needs to be marked as open.", # noqa: E501 + ], + vendor_credit_identifier: Annotated[ + str, "Unique identifier for the vendor credit to be marked as open." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_vendor_credit_open'."]: + """Change a vendor credit status to open in Zoho Books. + + Use this tool to update the status of an existing vendor credit to 'open' in Zoho Books. This is useful when you need to reactivate a vendor credit for further processing or adjustments.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/status/open".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def mark_vendor_credit_void( + context: ToolContext, + organization_id: Annotated[str, "Provide the unique ID of the organization in Zoho Books."], + vendor_credit_identifier: Annotated[ + str, "Unique identifier for the vendor credit to be marked as void." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'mark_vendor_credit_void'."]: + """Mark an existing vendor credit as void in Zoho Books. + + Use this tool to mark a specific vendor credit as void. Typically called when you need to invalidate a previously issued vendor credit in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/status/void".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def submit_vendor_credit_for_approval( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization where the vendor credit is submitted for approval." + ], + vendor_credit_unique_id: Annotated[ + str, "Unique identifier of the vendor credit to be submitted for approval." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'submit_vendor_credit'."]: + """Submit a vendor credit for approval. + + This tool submits a specified vendor credit for approval based on its unique ID. Use it to move vendor credits from draft to approval status in Zoho Books.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/submit".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_unique_id, + ), + method="POST", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def approve_vendor_credit( + context: ToolContext, + organization_identifier: Annotated[ + str, + "The ID of the organization in Zoho Books. This uniquely identifies the organization for which the vendor credit approval will be processed.", # noqa: E501 + ], + vendor_credit_identifier: Annotated[ + str, "Unique identifier for the vendor credit to be approved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'approve_vendor_credit'."]: + """Approve a vendor credit in Zoho Books. + + This tool approves a vendor credit in Zoho Books, marking the credit as accepted for the specified vendor credit ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/approve".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + ), + method="POST", + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_bills_with_vendor_credit( + context: ToolContext, + organization_id: Annotated[ + str, "ID of the organization to fetch applicable bills for vendor credit." + ], + vendor_credit_id: Annotated[ + str, "Unique identifier for the vendor credit to list the applied bills." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_bills_credited'."]: + """List bills with applied vendor credit from a vendor credit ID. + + Fetch a list of bills where a specific vendor credit has been applied. Use this tool to understand how vendor credits are distributed across bills.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/bills".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), vendor_credit_id=vendor_credit_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def apply_vendor_credit_to_bill( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization where the vendor credit will be applied. Required for identification within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + vendor_credit_identifier: Annotated[ + str | None, + "Unique identifier for the vendor credit to be applied to a bill. 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 'apply_credits_to_a_bill'."]: + """Apply vendor credit to an existing bill in Zoho Books. + + Use this tool to apply a specific vendor credit to existing bills. It helps manage and track accounts payable by adjusting bills with vendor credits. + + 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[ + "APPLYVENDORCREDITTOBILL_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not vendor_credit_identifier: + missing_params.append(("vendor_credit_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["APPLYVENDORCREDITTOBILL_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["APPLYVENDORCREDITTOBILL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/bills".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["APPLYVENDORCREDITTOBILL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def remove_vendor_bill_credit( + context: ToolContext, + organization_id: Annotated[ + str, "The unique ID of the organization for which the vendor credit bill is to be deleted." + ], + vendor_credit_identifier: Annotated[ + str, + "Unique identifier of the vendor credit to be deleted. Required for bill credit removal.", + ], + vendor_credit_bill_identifier: Annotated[ + str, "Unique identifier of the vendor credit bill to delete the applied credits." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_vendor_credit_bill'."]: + """Delete credits applied to a vendor bill. + + Use this tool to remove credits applied to a specific vendor bill using the vendor_credit_id and vendor_credit_bill_id.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/bills/{vendor_credit_bill_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + vendor_credit_bill_id=vendor_credit_bill_identifier, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def refund_vendor_credit( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The ID of the organization for which the vendor credit refund is being processed. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + vendor_credit_identifier: Annotated[ + str | None, + "Unique identifier for the vendor credit that needs to be refunded. 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 'refund_vendor_credit'."]: + """Process a refund for vendor credit. + + Use this tool to initiate a refund for a specified vendor credit. Suitable when needing to refund amounts credited to a vendor. + + 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["REFUNDVENDORCREDIT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not vendor_credit_identifier: + missing_params.append(("vendor_credit_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REFUNDVENDORCREDIT_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["REFUNDVENDORCREDIT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REFUNDVENDORCREDIT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_vendor_credit_refunds( + context: ToolContext, + organization_identifier: Annotated[ + str, "Unique string ID of the organization for which refunds are to be listed." + ], + vendor_credit_id: Annotated[ + str, "The unique identifier for a specific vendor credit whose refunds are to be listed." + ], + page_number: Annotated[ + int | None, + "Page number for pagination, specifying which set of results to retrieve. Default is 1.", + ] = 1, + records_per_page: Annotated[ + int | None, + "Specify the number of refunds to return per page for pagination. Default is 200.", + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_vendor_credit_refunds'."]: + """Retrieve all refunds for a specified vendor credit. + + Use this tool to get a list of all refunds associated with a particular vendor credit by providing the vendor credit ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), vendor_credit_id=vendor_credit_id + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_identifier, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_vendor_credit_refund( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Unique identifier for the organization. This is needed to specify which organization the vendor credit refund update applies to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + vendor_credit_identifier: Annotated[ + str | None, + "Unique identifier of the vendor credit to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + vendor_credit_refund_identifier: Annotated[ + str | None, + "Unique identifier for the vendor credit refund transaction that needs to be updated. 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_vendor_credit_refund'."]: + """Update a refunded vendor credit transaction. + + Use this tool to update details of a refunded vendor credit transaction by specifying the vendor credit ID and refund ID. + + 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[ + "UPDATEVENDORCREDITREFUND_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not vendor_credit_identifier: + missing_params.append(("vendor_credit_identifier", "path")) + if not vendor_credit_refund_identifier: + missing_params.append(("vendor_credit_refund_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEVENDORCREDITREFUND_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["UPDATEVENDORCREDITREFUND_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds/{vendor_credit_refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + vendor_credit_refund_id=vendor_credit_refund_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEVENDORCREDITREFUND_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_vendor_credit_refund( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization to which the vendor credit belongs." + ], + vendor_credit_identifier: Annotated[ + str, "Unique identifier for the vendor credit to retrieve the refund details." + ], + vendor_credit_refund_id: Annotated[ + str, + "Unique identifier of the vendor credit refund for the specific transaction. Required to retrieve refund details.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_vendor_credit_refund'."]: + """Retrieve a refund for a specific vendor credit. + + Fetches details of a refund associated with a specific vendor credit using the vendor credit ID and refund ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds/{vendor_credit_refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + vendor_credit_refund_id=vendor_credit_refund_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_vendor_credit_refund( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization to which the vendor credit refund belongs." + ], + vendor_credit_identifier: Annotated[ + str, "Unique identifier for the vendor credit, required to delete the refund." + ], + vendor_credit_refund_id: Annotated[ + str, "Unique identifier for the specific vendor credit refund you wish to delete." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_vendor_credit_refund'."]: + """Delete a vendor credit refund in Zoho Books. + + Use this tool to delete a specific vendor credit refund in Zoho Books when you have the vendor credit ID and refund ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds/{vendor_credit_refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + vendor_credit_refund_id=vendor_credit_refund_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_vendor_credit_refunds( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier of the organization for which to list vendor credit refunds." + ], + search_vendor_credits_by_customer_id: Annotated[ + int | None, "Search for vendor credits linked to a specific customer using their ID." + ] = None, + vendor_credit_last_modified_time: Annotated[ + str | None, + "Search vendor credits using the last modified time as a filter. This expects a date-time string, typically in ISO 8601 format, to narrow down results by when they were last modified.", # noqa: E501 + ] = None, + sort_vendor_credits_by_column: Annotated[ + str | None, + "Specify the column to sort vendor credits by. Allowed values: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time, reference_number.", # noqa: E501 + ] = None, + pagination_page_number: Annotated[ + int | None, "Specify the page number of results to retrieve for pagination. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of vendor credits to return per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_vendor_credit_refunds1'."]: + """Retrieve a paginated list of vendor credit refunds. + + Use this tool to obtain detailed information about vendor credit refunds, useful for financial reconciliation and tracking vendor transactions. This tool supports pagination.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "customer_id": search_vendor_credits_by_customer_id, + "last_modified_time": vendor_credit_last_modified_time, + "sort_column": sort_vendor_credits_by_column, + "page": pagination_page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def add_vendor_credit_comment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization. Required to specify which organization the vendor credit belongs to. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + vendor_credit_identifier: Annotated[ + str | None, + "Unique identifier for the vendor credit to which the comment 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_vendor_credit_comment'."]: + """Add a comment to an existing vendor credit. + + Use this tool to add a comment to a vendor credit in Zoho Books. It should be called when you need to attach notes or additional information to a vendor credit entry. + + 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[ + "ADDVENDORCREDITCOMMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not vendor_credit_identifier: + missing_params.append(("vendor_credit_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDVENDORCREDITCOMMENT_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["ADDVENDORCREDITCOMMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDVENDORCREDITCOMMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_vendor_credit_comments( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization. This ID is required to access the vendor credit comments.", # noqa: E501 + ], + vendor_credit_identifier: Annotated[ + str, + "The unique identifier for the specific vendor credit to retrieve its history and comments.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_vendor_credit_comments'."]: + """Retrieve history and comments for a vendor credit. + + Use this tool to get the history and comments associated with a specific vendor credit by providing the vendor credit ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/comments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_identifier, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.debitnotes.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_vendor_credit_comment( + context: ToolContext, + organization_id: Annotated[str, "The unique ID of the organization in Zoho Books."], + vendor_credit_id: Annotated[ + str, "Unique identifier of the vendor credit to specify which comment to delete." + ], + comment_id: Annotated[str, "Unique identifier of the vendor credit comment to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_vendor_credit_comment'."]: + """Delete a vendor credit comment in Zoho Books. + + Use this tool to delete a specific comment from a vendor credit in Zoho Books. This is useful when you need to manage or clean up vendor credit records by removing unnecessary or incorrect comments.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/comments/{comment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + vendor_credit_id=vendor_credit_id, + comment_id=comment_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def create_vendor_payment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID of the organization to which the vendor payment belongs. 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 'create_vendor_payment'."]: + """Create and apply a payment to a vendor's bill. + + This tool is used to record a payment made to a vendor, with the option to apply the payment either partially or fully to the vendor's outstanding bills. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEVENDORPAYMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEVENDORPAYMENT_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["CREATEVENDORPAYMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEVENDORPAYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_vendor_payments( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier of the organization whose vendor payments you want to list." + ], + vendor_name_query: Annotated[ + str | None, "Search payments by vendor name using parameters like startswith or contains." + ] = None, + search_by_reference_number: Annotated[ + str | None, + "Search payments using the reference number. Supports variants: 'startswith' and 'contains'.", # noqa: E501 + ] = None, + payment_number_search: Annotated[ + str | None, + "Search payments using the payment number with options for exact match, starts with, or contains.", # noqa: E501 + ] = None, + payment_date_filter: Annotated[ + str | None, + "Specify the date for payment filtering. Use variants like 'date_start', 'date_end', 'date_before', and 'date_after'.", # noqa: E501 + ] = None, + payment_amount_filter: Annotated[ + float | None, + "Filter payments by amount paid to the vendor. Use variants: 'less_than', 'less_equals', 'greater_than', 'greater_equals' to specify the condition.", # noqa: E501 + ] = None, + search_by_payment_mode: Annotated[ + str | None, + "Search payments by payment mode using variants like 'startswith' or 'contains'.", + ] = None, + search_with_payment_notes: Annotated[ + str | None, "Search payments using notes with options like startswith or contains." + ] = None, + vendor_id: Annotated[ + str | None, "The unique ID of the vendor, used to search payments by vendor ID." + ] = None, + last_modified_time_filter: Annotated[ + str | None, + "Filter vendor payments by their last modified time. Use a date-time string in ISO 8601 format.", # noqa: E501 + ] = None, + search_payments_by_bill_id: Annotated[ + str | None, "Search payments using the specific Bill ID associated with the transaction." + ] = None, + search_by_description: Annotated[ + str | None, + "Search payments by description. Use 'description_startswith' or 'description_contains' variants for specific matches.", # noqa: E501 + ] = None, + filter_payment_mode: Annotated[ + str | None, + "Filter payments by payment mode. Options include All, Check, Cash, BankTransfer, Paypal, CreditCard, GoogleCheckout, Credit, Authorizenet, BankRemittance, Payflowpro, and Others.", # noqa: E501 + ] = None, + search_text: Annotated[ + str | None, + "Search for payments using reference number, vendor name, or payment description.", + ] = None, + sort_payments_by: Annotated[ + str | None, + "Sort payments by column. Options: vendor_name, date, reference_number, amount, balance.", + ] = None, + page_number_to_fetch: Annotated[ + int | None, "Specify the page number of results to fetch. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Specify the number of records to fetch per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_vendor_payments'."]: + """Fetch all payments made to vendors. + + Use this tool to retrieve a list of all vendor payments. It helps manage and track financial transactions with vendors.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "vendor_name": vendor_name_query, + "reference_number": search_by_reference_number, + "payment_number": payment_number_search, + "date": payment_date_filter, + "amount": payment_amount_filter, + "payment_mode": search_by_payment_mode, + "notes": search_with_payment_notes, + "vendor_id": vendor_id, + "last_modified_time": last_modified_time_filter, + "bill_id": search_payments_by_bill_id, + "description": search_by_description, + "filter_by": filter_payment_mode, + "search_text": search_text, + "sort_column": sort_payments_by, + "page": page_number_to_fetch, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_vendor_payment_with_custom_id( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization within Zoho Books. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_field_api_name: Annotated[ + str | None, + "The API name of the unique custom field used to identify the vendor payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_field_unique_value: Annotated[ + str | None, + "The unique value of the custom field used to identify or create a vendor payment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + create_new_record_if_not_exists: Annotated[ + bool | None, + "Set to true to create a new vendor payment if no existing record matches the unique custom field value. 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_vendor_payment_using_custom_field'." +]: + """Update or create a vendor payment using a unique custom field. + + This tool updates an existing vendor payment by using a unique custom field as an identifier. If the unique value is not found and the X-Upsert option is enabled, it will create a new vendor payment if sufficient details are provided. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires query parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required query parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEVENDORPAYMENTWITHCUSTOMID_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEVENDORPAYMENTWITHCUSTOMID_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["UPDATEVENDORPAYMENTWITHCUSTOMID_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEVENDORPAYMENTWITHCUSTOMID_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "X-Unique-Identifier-Key": custom_field_api_name, + "X-Unique-Identifier-Value": custom_field_unique_value, + "X-Upsert": create_new_record_if_not_exists, + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_multiple_vendor_payments( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization from which the vendor payments are to be deleted.", # noqa: E501 + ], + vendor_payment_ids: Annotated[str, "Comma-separated list of vendor payment IDs to delete."], + bulk_delete: Annotated[bool, "Set to true to perform bulk deletion of vendor payments."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'bulk_delete_vendor_payments'."]: + """Delete multiple vendor payments in one action. + + Use this tool to delete multiple vendor payments at once, streamlining payment management and cleanup tasks.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorpayments".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL") + ), + method="DELETE", + params=remove_none_values({ + "organization_id": organization_id, + "vendorpayment_id": vendor_payment_ids, + "bulk_delete": bulk_delete, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_vendor_payment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "Provide the specific ID of the organization for which the vendor payment is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + payment_identifier: Annotated[ + str | None, + "The unique identifier of the vendor payment to be updated. 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_vendor_payment'."]: + """Update or modify an existing vendor payment. + + Use this tool to update an existing vendor payment, including modifying the amount applied to bills. + + 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["UPDATEVENDORPAYMENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not payment_identifier: + missing_params.append(("payment_identifier", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEVENDORPAYMENT_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["UPDATEVENDORPAYMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), payment_id=payment_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEVENDORPAYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def fetch_vendor_payment_details( + context: ToolContext, + organization_id: Annotated[ + str, "The unique identifier for the organization to retrieve the vendor payment details." + ], + payment_identifier: Annotated[ + str, "Unique identifier for the payment to retrieve its details." + ], + include_tax_information: Annotated[ + bool | None, "Set to true to fetch tax information for the vendor payment." + ] = None, + fetch_statement_line_info: Annotated[ + bool | None, "Set to true to fetch statement line information for the vendor payment." + ] = None, + print_payment: Annotated[ + bool | None, "Specify true to print the Vendor Payment details." + ] = None, + is_bill_payment_id: Annotated[ + bool | None, "True if the ID is for a Bill Payment, false for a Vendor Payment." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_vendor_payment'."]: + """Retrieve details of a vendor payment by payment ID. + + Call this tool to get detailed information about a specific vendor payment using the payment ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), payment_id=payment_identifier + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "fetchTaxInfo": include_tax_information, + "fetchstatementlineinfo": fetch_statement_line_info, + "print": print_payment, + "is_bill_payment_id": is_bill_payment_id, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_vendor_payment( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique ID of the organization for which the vendor payment is to be deleted. This is required to identify the correct organization within Zoho Books.", # noqa: E501 + ], + vendor_payment_id: Annotated[str, "Unique identifier of the vendor payment to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_vendor_payment'."]: + """Delete an existing vendor payment in Zoho Books. + + Use this tool to delete a specific vendor payment in Zoho Books when you have the payment ID and need to erase it from the records.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), payment_id=vendor_payment_id + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def list_vendor_payment_refunds( + context: ToolContext, + organization_id: Annotated[ + str, + "ID of the organization in Zoho Books to list the refunds for. This should be a unique identifier as specified by Zoho Books.", # noqa: E501 + ], + payment_identifier: Annotated[ + str, "Unique identifier of the vendor payment to fetch refunds for." + ], + page_number: Annotated[ + int | None, "Page number to be fetched, starting from 1. Default is 1." + ] = 1, + records_per_page: Annotated[ + int | None, "Number of records to fetch per page. Default is 200." + ] = 200, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'list_vendor_payment_refunds'."]: + """List all refunds for a vendor payment. + + Retrieve a list of all refunds associated with a specific vendor payment in Zoho Books.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), payment_id=payment_identifier + ), + method="GET", + params=remove_none_values({ + "organization_id": organization_id, + "page": page_number, + "per_page": records_per_page, + }), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def refund_vendor_overpayment( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_identifier: Annotated[ + str | None, + "The unique ID representing the organization. Required to refund vendor overpayment. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + vendor_payment_id: Annotated[ + str | None, + "Unique identifier for the vendor payment to be refunded. 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 'refund_excess_vendor_payment'."]: + """Refund excess amount paid to a vendor. + + Use this tool to process a refund for any excess amount that has been paid to a vendor. This should be called when an overpayment needs to be returned to the vendor. + + 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[ + "REFUNDVENDOROVERPAYMENT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_identifier: + missing_params.append(("organization_identifier", "query")) + if not vendor_payment_id: + missing_params.append(("vendor_payment_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REFUNDVENDOROVERPAYMENT_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["REFUNDVENDOROVERPAYMENT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), payment_id=vendor_payment_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REFUNDVENDOROVERPAYMENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_identifier}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_vendor_payment_refund_details( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization whose vendor payment refund details are requested." + ], + payment_identifier: Annotated[ + str, "Unique identifier for the payment associated with the vendor refund." + ], + vendor_payment_refund_id: Annotated[ + str, "Unique identifier for the vendor payment refund to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'get_vendor_payment_refund'."]: + """Retrieve details of a specific vendor payment refund. + + Use this tool to obtain information about a particular refund of a vendor payment, identified by the payment ID and refund ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds/{vendorpayment_refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + payment_id=payment_identifier, + vendorpayment_refund_id=vendor_payment_refund_id, + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.UPDATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def update_vendor_payment_refund( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "The unique identifier for the organization associated with the refund transaction. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + payment_identifier: Annotated[ + str | None, + "Unique identifier of the payment. Required to specify which payment is being updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + vendor_payment_refund_id: Annotated[ + str | None, + "Unique identifier of the vendor payment refund required for updating the transaction. 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_vendor_payment_refund'."]: + """Update the refunded transaction for a vendor payment. + + Call this tool to update details related to a vendor payment refund. It is used when modifications to an existing refund transaction are necessary. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path, 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[ + "UPDATEVENDORPAYMENTREFUND_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not payment_identifier: + missing_params.append(("payment_identifier", "path")) + if not vendor_payment_refund_id: + missing_params.append(("vendor_payment_refund_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEVENDORPAYMENTREFUND_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["UPDATEVENDORPAYMENTREFUND_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds/{vendorpayment_refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + payment_id=payment_identifier, + vendorpayment_refund_id=vendor_payment_refund_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEVENDORPAYMENTREFUND_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.DELETE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def delete_vendor_payment_refund( + context: ToolContext, + organization_id: Annotated[ + str, "The ID of the organization to which the vendor payment refund belongs." + ], + payment_identifier: Annotated[str, "Unique identifier of the payment to be deleted."], + vendor_payment_refund_id: Annotated[ + str, "Unique identifier of the vendor payment refund to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'delete_vendor_payment_refund'."]: + """Delete a refund from an existing vendor payment. + + Use this tool to remove a specific refund associated with a vendor payment. It's useful when a refund needs to be retracted or corrected.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds/{vendorpayment_refund_id}".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), + payment_id=payment_identifier, + vendorpayment_refund_id=vendor_payment_refund_id, + ), + method="DELETE", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.CREATE"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def send_vendor_payment_email( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + organization_id: Annotated[ + str | None, + "ID of the organization for which the vendor payment email is being sent. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + vendor_payment_id: Annotated[ + str | None, + "Unique identifier for the vendor payment. Used to retrieve and send the corresponding payment receipt via email. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + email_attachments: Annotated[ + str | None, + "List of file paths or URLs to attach to the email. Only used when mode is 'execute'.", + ] = None, + attached_file_name: Annotated[ + str | None, + "Specify the name of the file to be attached to the email. Only used when mode is 'execute'.", # noqa: E501 + ] = None, + send_vendor_payment_attachment: Annotated[ + bool | None, + "Set to true to include the vendor payment attachment in the email. 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 'email_vendor_payment'."]: + """Send a payment receipt email to a vendor. + + This tool sends a vendor payment receipt to a vendor via email. You can customize the email content, attach files, and control sender preferences. If no customizations are provided, the email will use default templates. + + 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[ + "SENDVENDORPAYMENTEMAIL_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not organization_id: + missing_params.append(("organization_id", "query")) + if not vendor_payment_id: + missing_params.append(("vendor_payment_id", "path")) + + if missing_params: + raise RetryableToolError( + message="Missing required parameters: {param_names}", + developer_message=("Required parameters validation failed: {param_details}"), + additional_prompt_content=( + "The following required parameters are missing: " + "{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SENDVENDORPAYMENTEMAIL_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["SENDVENDORPAYMENTEMAIL_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), payment_id=vendor_payment_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SENDVENDORPAYMENTEMAIL_REQUEST_BODY_SCHEMA"], + params=remove_none_values({ + "organization_id": organization_id, + "send_attachment": send_vendor_payment_attachment, + "attachments": email_attachments, + "file_name": attached_file_name, + }), + headers=remove_none_values({ + "Content-Type": "application/json", + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool( + requires_auth=OAuth2(id="arcade-zoho", scopes=["ZohoBooks.vendorpayments.READ"]), + requires_secrets=["ZOHO_SERVER_URL"], +) +async def get_vendor_payment_email_content( + context: ToolContext, + organization_id: Annotated[ + str, + "The unique identifier for the organization. Required to retrieve the vendor payment email content.", # noqa: E501 + ], + vendor_payment_id: Annotated[ + str, "Unique identifier for the vendor payment to retrieve email content." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'get_vendor_payment_email_content'." +]: + """Retrieve email content for a vendor payment receipt. + + This tool retrieves the pre-filled email details for a vendor payment, including the message subject, body, recipients, sender, and attachments. Use it to easily compose and send a payment receipt email to vendors.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="{zoho_server_url}/books/v3/vendorpayments/{payment_id}/email".format( + zoho_server_url=context.get_secret("ZOHO_SERVER_URL"), payment_id=vendor_payment_id + ), + method="GET", + params=remove_none_values({"organization_id": organization_id}), + headers=remove_none_values({ + "Authorization": "Bearer {authorization}".format( # noqa: UP032 + authorization=context.get_auth_token_or_empty() + ) + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/tools/request_body_schemas.py b/toolkits/zoho_books_api/arcade_zoho_books_api/tools/request_body_schemas.py new file mode 100644 index 00000000..b4893f30 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/tools/request_body_schemas.py @@ -0,0 +1,44055 @@ +"""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] = { + "CREATEBANKACCOUNT_REQUEST_BODY_SCHEMA": { + "properties": { + "account_code": {"description": "Code of the Account", "type": "string"}, + "account_name": { + "description": "Name of the account", + "example": "Corporate Account", + "type": "string", + }, + "account_number": { + "description": "Number associated with the Bank Account", + "example": "80000009823", + "type": "string", + }, + "account_type": { + "description": "Type of the account", + "example": "bank", + "type": "string", + }, + "bank_name": { + "description": "Name of the Bank", + "example": "Xavier Bank", + "type": "string", + }, + "currency_code": { + "description": "Code of the currency associated with the Bank Account", + "example": "USD", + "type": "string", + }, + "currency_id": { + "description": "ID of the Currency associated with the Account", + "example": "460000000000097", + "type": "string", + }, + "description": { + "description": "Description of the Account", + "example": "Salary details.", + "type": "string", + }, + "is_paypal_account": { + "description": "Check if the Account is Paypal Account", + "example": True, + "type": "boolean", + }, + "is_primary_account": { + "description": "Check if the Account is Primary Account in Zoho Books", + "example": False, + "type": "boolean", + }, + "paypal_email_address": { + "description": "Email Address of the Paypal account.", + "example": "johnsmith@zilliuminc.com", + "type": "string", + }, + "paypal_type": { + "description": "The type of Payment for the Paypal " + "Account. Allowed Values : " + "standard and " + "adaptive", + "type": "string", + }, + "routing_number": { + "description": "Routing Number of the Account", + "example": "123456789", + "type": "string", + }, + }, + "required": ["account_name", "account_type"], + "type": "object", + }, + "UPDATEBANKACCOUNTZOHOBOOKS_REQUEST_BODY_SCHEMA": { + "properties": { + "account_code": {"description": "Code of the Account", "type": "string"}, + "account_name": { + "description": "Name of the account", + "example": "Corporate Account", + "type": "string", + }, + "account_number": { + "description": "Number associated with the Bank Account", + "example": "80000009823", + "type": "string", + }, + "account_type": { + "description": "Type of the account", + "example": "bank", + "type": "string", + }, + "bank_name": { + "description": "Name of the Bank", + "example": "Xavier Bank", + "type": "string", + }, + "currency_code": { + "description": "Code of the currency associated with the Bank Account", + "example": "USD", + "type": "string", + }, + "currency_id": { + "description": "ID of the Currency associated with the Account", + "example": "460000000000097", + "type": "string", + }, + "description": { + "description": "Description of the Account", + "example": "Salary details.", + "type": "string", + }, + "is_paypal_account": { + "description": "Check if the Account is Paypal Account", + "example": True, + "type": "boolean", + }, + "is_primary_account": { + "description": "Check if the Account is Primary Account in Zoho Books", + "example": False, + "type": "boolean", + }, + "paypal_email_address": { + "description": "Email Address of the Paypal account.", + "example": "johnsmith@zilliuminc.com", + "type": "string", + }, + "paypal_type": { + "description": "The type of Payment for the Paypal " + "Account. Allowed Values : " + "standard and " + "adaptive", + "type": "string", + }, + "routing_number": { + "description": "Routing Number of the Account", + "example": "123456789", + "type": "string", + }, + }, + "required": ["account_name", "account_type"], + "type": "object", + }, + "IMPORTBANKSTATEMENTS_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the Bank/Credit Card account", + "example": "460000000050127", + "type": "string", + }, + "end_date": { + "description": "Greatest date in the transaction set", + "example": "2019-01-02", + "type": "string", + }, + "start_date": { + "description": "Least date in the transaction set", + "example": "2019-01-01", + "type": "string", + }, + "transactions": { + "items": { + "properties": { + "amount": { + "description": "Amount involved in the transaction", + "example": 7500, + "format": "double", + "type": "number", + }, + "date": { + "description": "Date of the transaction", + "example": "2012-01-14", + "type": "string", + }, + "debit_or_credit": { + "description": "Indicates if transaction is Debit or Credit", + "example": "credit", + "type": "string", + }, + "description": { + "description": "Transaction description", + "example": "Electronics purchase", + "type": "string", + }, + "payee": { + "description": "Payee involved in the transaction", + "example": "Bowman and Co", + "type": "string", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-2134", + "type": "string", + }, + "transaction_id": { + "description": "Unique ID that is specific to the transaction", + "example": "XXXXSCD01", + "type": "string", + }, + }, + "required": ["date", "debit_or_credit", "amount"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["account_id", "transactions"], + "type": "object", + }, + "CREATEFINANCIALACCOUNTRULE_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "Account which is involved in the rule with the target account.", + "example": 460000000049001, + "format": "int64", + "type": "integer", + }, + "apply_to": { + "description": "Rule applies to either deposits or " + "withdrawals for bank accounts and to " + "refunds or charges for credit card " + "account. Allowed Values : " + "withdrawals, " + "deposits, " + "refunds and " + "charges.", + "example": "deposits", + "type": "string", + }, + "criteria_type": { + "description": "Specifies whether all the criteria " + "have to be satisfied or not. Allowed " + "Values : and and " + "or", + "example": "and", + "type": "string", + }, + "criterion": { + "items": { + "properties": { + "comparator": { + "description": "Comparator used in Criteria", + "example": "greater_than_or_equals", + "type": "string", + }, + "field": { + "description": "Field involved in the Criteria", + "example": "amount", + "type": "string", + }, + "value": { + "description": "Value to be compared with", + "example": "500.00", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "ID of the customer.(Applicable for " + "sales_without_invoices,deposit, " + "expense)", + "example": 46000000000111, + "format": "int64", + "type": "integer", + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "product_type": { + "description": "Product Type associated with the " + "Rule. Allowed values:
For UK " + "and Europe: " + "digital_service, " + "goods and " + "service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods.", + "type": "string", + "x-node_available_in": ["uk", "za", "eu"], + "x-node_unavailable_in": [], + }, + "record_as": { + "description": "Record transaction based on value " + "specified in apply_to node. For bank " + "accounts: If apply_to is deposits: " + "sales_without_invoices, transfer_fund, " + "interest_income, other_income, " + "expense_refund, deposit. If apply_to is " + "withdrawals: expense, transfer_fund, " + "card_payment, owner_drawings. For " + "credit_card accounts: If apply_to is " + "refunds: card_payment, transfer_fund, " + "expense_refund, refund. If apply_to is " + "charges: expense, transfer_fund. Allowed " + "Values: expense, " + "deposit, " + "refund, " + "transfer_fund, " + "card_payment, " + "sales_without_invoices, " + "expense_refund, " + "interest_income, " + "other_income and " + "owner_drawings", + "example": "deposit", + "type": "string", + }, + "reference_number": { + "description": "Specifies if Reference number is " + "manual or generated from the " + "statement. Allowed Values: " + "manual and " + "from_statement", + "example": "manual", + "type": "string", + }, + "rule_name": { + "description": "Name of the Rule", + "example": "Minimum Deposit Rule", + "type": "string", + }, + "target_account_id": { + "description": "The account on which the rule has to be applied.", + "example": 460000000048001, + "format": "int64", + "type": "integer", + }, + "tax_authority_id": { + "description": "ID of the Tax Authority Associated with the Rule", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption Associated with the Rule", + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Tax ID involved in the transaction.", + "example": "460000000048238", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the bank " + "transaction.Choose whether the " + "contact falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "ke", "za"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "bank rules. VAT treatment denotes " + "the location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and " + "selling/purchasing Goods then his " + "VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": [ + "rule_name", + "target_account_id", + "apply_to", + "criteria_type", + "criterion", + "record_as", + ], + "type": "object", + }, + "UPDATEBANKACCOUNTRULE_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "Account which is involved in the rule with the target account.", + "example": 460000000049001, + "format": "int64", + "type": "integer", + }, + "apply_to": { + "description": "Rule applies to either deposits or " + "withdrawals for bank accounts and to " + "refunds or charges for credit card " + "account. Allowed Values : " + "withdrawals, " + "deposits, " + "refunds and " + "charges.", + "example": "deposits", + "type": "string", + }, + "criteria_type": { + "description": "Specifies whether all the criteria " + "have to be satisfied or not. Allowed " + "Values : and and " + "or", + "example": "and", + "type": "string", + }, + "criterion": { + "items": { + "properties": { + "comparator": { + "description": "Comparator used in Criteria", + "example": "greater_than_or_equals", + "type": "string", + }, + "criteria_id": { + "description": "ID of the Criteria", + "example": "460000000048009", + "type": "string", + }, + "field": { + "description": "Field involved in the Criteria", + "example": "amount", + "type": "string", + }, + "value": { + "description": "Value to be compared with", + "example": "500.00", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "ID of the customer.(Applicable for " + "sales_without_invoices,deposit, " + "expense)", + "example": 46000000000111, + "format": "int64", + "type": "integer", + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "product_type": { + "description": "Product Type associated with the " + "Rule. Allowed values:
For UK " + "and Europe: " + "digital_service, " + "goods and " + "service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods.", + "type": "string", + "x-node_available_in": ["uk", "za", "eu"], + "x-node_unavailable_in": [], + }, + "record_as": { + "description": "Record transaction based on value " + "specified in apply_to node. For bank " + "accounts: If apply_to is deposits: " + "sales_without_invoices, transfer_fund, " + "interest_income, other_income, " + "expense_refund, deposit. If apply_to is " + "withdrawals: expense, transfer_fund, " + "card_payment, owner_drawings. For " + "credit_card accounts: If apply_to is " + "refunds: card_payment, transfer_fund, " + "expense_refund, refund. If apply_to is " + "charges: expense, transfer_fund. Allowed " + "Values: expense, " + "deposit, " + "refund, " + "transfer_fund, " + "card_payment, " + "sales_without_invoices, " + "expense_refund, " + "interest_income, " + "other_income and " + "owner_drawings", + "example": "deposit", + "type": "string", + }, + "reference_number": { + "description": "Specifies if Reference number is " + "manual or generated from the " + "statement. Allowed Values: " + "manual and " + "from_statement", + "example": "manual", + "type": "string", + }, + "rule_name": { + "description": "Name of the Rule", + "example": "Minimum Deposit Rule", + "type": "string", + }, + "target_account_id": { + "description": "The account on which the rule has to be applied.", + "example": 460000000048001, + "format": "int64", + "type": "integer", + }, + "tax_authority_id": { + "description": "ID of the Tax Authority Associated with the Rule", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption Associated with the Rule", + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Tax ID involved in the transaction.", + "example": "460000000048238", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the bank " + "transaction.Choose whether the " + "contact falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "ke", "za"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "bank rules. VAT treatment denotes " + "the location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and " + "selling/purchasing Goods then his " + "VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": [ + "rule_name", + "target_account_id", + "apply_to", + "criteria_type", + "criterion", + "record_as", + ], + "type": "object", + }, + "CREATEBANKTRANSACTION_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "bank_charges": { + "description": "Bank Charges applied to the transaction", + "example": 0, + "format": "double", + "type": "number", + }, + "currency_id": { + "description": "The currency ID involved in the transaction.", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": {"description": "Index of the custom field", "type": "integer"}, + "label": {"description": "Label of the Custom Field", "type": "string"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "ID of the customer or vendor.", + "example": "460000000000111", + "type": "string", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "documents": { + "description": "List of files to be attached to a particular transaction.", + "items": { + "properties": { + "document_id": {"description": "Unique ID of the attached file."}, + "file_name": {"description": "Name of the attached file."}, + }, + "type": "object", + }, + "type": "array", + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "from_account_id": { + "description": "The account ID from which money " + "will be transferred(Mandatory for " + "specific type of transactions). " + "These accounts differ with respect " + "to transaction_type. Ex: To a bank " + "account, from-account can be: bank " + ", card, income, refund. To a card " + "account, from account can be: " + "bank, card, refund.", + "example": "460000000070003", + "type": "string", + }, + "from_account_tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "is_inclusive_tax": { + "description": "Check if transaction is tax Inclusive", + "example": False, + "type": "boolean", + }, + "payment_mode": { + "description": "Mode of payment for the transaction. " + "(not applicable for transfer_fund, " + "card_payment, owner_drawings). " + "Ex:cash, cheque, etc.,", + "example": "Cash", + "type": "string", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_authority_id": { + "description": "ID of the Tax Authority", + "type": "string", + "x-node_available_in": ["us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group applied", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "to_account_id": { + "description": "ID of the account to which the money " + "gets transferred(Mandatory for " + "specific type of transactions). Ex: " + "From a bank account, to-account can " + "be: bank, card, drawings, " + "expense,credit notes. From a card " + "account, to-account can be: card, " + "bank, expense.", + "example": "460000000048001", + "type": "string", + }, + "to_account_tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "transaction_type": { + "description": "Type of the transaction.
" + "Allowed transaction " + "types : deposit, " + "refund(*Supported only in Credit " + "Card accounts), transfer_fund, " + "card_payment, " + "sales_without_invoices, " + "expense_refund, " + "owner_contribution, " + "interest_income, other_income, " + "owner_drawings, sales_return
" + "Note: You will " + "not be able to create the " + "following module-specific " + "transaction types under Bank " + "Transaction endpoints :
Expense, Vendor ' + "Advance/Vendor Payment/Bill " + "Payment, Vendor ' + "Credit Refund, Vendor ' + "Payment Refund, Customer ' + "Advance/Customer Payment, Credit ' + "Note Refund, Payment ' + "Refund. Hence, refer them in " + "their repective modules.
", + "example": "deposit", + "type": "string", + }, + "user_id": { + "description": "ID of the User involved in the Transaction", + "format": "int64", + "type": "integer", + }, + }, + "required": ["transaction_type"], + "type": "object", + }, + "UPDATEBANKTRANSACTION_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "bank_charges": { + "description": "Bank Charges applied to the transaction", + "example": 0, + "format": "double", + "type": "number", + }, + "currency_id": { + "description": "The currency ID involved in the transaction.", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": {"description": "Index of the custom field", "type": "integer"}, + "label": {"description": "Label of the Custom Field", "type": "string"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "ID of the customer or vendor.", + "example": "460000000000111", + "type": "string", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "documents": { + "description": "List of files to be attached to a particular transaction.", + "items": { + "properties": { + "document_id": {"description": "Unique ID of the attached file."}, + "file_name": {"description": "Name of the attached file."}, + }, + "type": "object", + }, + "type": "array", + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "from_account_id": { + "description": "The account ID from which money " + "will be transferred(Mandatory for " + "specific type of transactions). " + "These accounts differ with respect " + "to transaction_type. Ex: To a bank " + "account, from-account can be: bank " + ", card, income, refund. To a card " + "account, from account can be: " + "bank, card, refund.", + "example": "460000000070003", + "type": "string", + }, + "from_account_tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "is_inclusive_tax": { + "description": "Check if transaction is tax Inclusive", + "example": False, + "type": "boolean", + }, + "line_items": { + "items": { + "properties": { + "account_id": { + "description": "Mandatory " + "Account " + "id " + "for " + "which " + "transactions " + "are " + "to " + "be " + "listed.", + "example": "460000000048001", + "type": "string", + }, + "account_name": { + "description": "Name of the Account", + "example": "Petty Cash", + "type": "string", + }, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "item_order": { + "description": "Order of the Item", + "example": 1, + "type": "integer", + }, + "item_total": { + "description": "Total of the Item", + "example": 7500, + "format": "double", + "type": "number", + }, + "item_total_inclusive_of_tax": { + "description": "Total of the Item inclusive of Tax", + "example": 7500, + "format": "double", + "type": "number", + }, + "line_id": { + "description": "ID of the Line in Bank Transactions", + "example": "46000000001234", + "format": "int64", + "type": "integer", + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_amount": { + "description": "Amount of Tax", + "example": 0, + "format": "double", + "type": "number", + }, + "tax_id": { + "description": "ID of the tax or tax group applied", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_name": {"description": "Name of the Tax", "type": "string"}, + "tax_percentage": { + "description": "Percentage of the Tax", + "example": 0, + "format": "double", + "type": "number", + }, + "tax_type": {"example": "tax", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "payment_mode": { + "description": "Mode of payment for the transaction. " + "(not applicable for transfer_fund, " + "card_payment, owner_drawings). " + "Ex:cash, cheque, etc.,", + "example": "Cash", + "type": "string", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_authority_id": { + "description": "ID of the Tax Authority", + "type": "string", + "x-node_available_in": ["us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group applied", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "to_account_id": { + "description": "ID of the account to which the money " + "gets transferred(Mandatory for " + "specific type of transactions). Ex: " + "From a bank account, to-account can " + "be: bank, card, drawings, " + "expense,credit notes. From a card " + "account, to-account can be: card, " + "bank, expense.", + "example": "460000000048001", + "type": "string", + }, + "to_account_tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "transaction_type": { + "description": "Type of the transaction.
" + "Allowed transaction " + "types : deposit, " + "refund(*Supported only in Credit " + "Card accounts), transfer_fund, " + "card_payment, " + "sales_without_invoices, " + "expense_refund, " + "owner_contribution, " + "interest_income, other_income, " + "owner_drawings, sales_return
" + "Note: You will " + "not be able to create the " + "following module-specific " + "transaction types under Bank " + "Transaction endpoints :
Expense, Vendor ' + "Advance/Vendor Payment/Bill " + "Payment, Vendor ' + "Credit Refund, Vendor ' + "Payment Refund, Customer ' + "Advance/Customer Payment, Credit ' + "Note Refund, Payment ' + "Refund. Hence, refer them in " + "their repective modules.
", + "example": "deposit", + "type": "string", + }, + "user_id": { + "description": "ID of the User involved in the Transaction", + "format": "int64", + "type": "integer", + }, + }, + "required": ["transaction_type"], + "type": "object", + }, + "MATCHBANKTRANSACTION_REQUEST_BODY_SCHEMA": { + "properties": { + "transactions_to_be_matched": { + "items": { + "properties": { + "transaction_id": { + "description": "ID of the Transaction", + "example": "460000000048017", + "type": "string", + }, + "transaction_type": { + "description": "Type " + "of " + "the " + "transaction. " + "
" + "Allowed " + "transaction " + "types " + ": " + "deposit, " + "refund(*Supported " + "only " + "in " + "Credit " + "Card " + "accounts), " + "transfer_fund, " + "card_payment, " + "sales_without_invoices, " + "expense_refund, " + "owner_contribution, " + "interest_income, " + "other_income, " + "owner_drawings, " + "sales_return " + "
" + "Note: " + "You " + "will " + "not " + "be " + "able " + "to " + "create " + "the " + "following " + "module-specific " + "transaction " + "types " + "under " + "Bank " + "Transaction " + "endpoints " + ":
" + "Expense, ' + "Vendor ' + "Advance/Vendor " + "Payment/Bill " + "Payment, " + "Vendor ' + "Credit " + "Refund, " + "Vendor ' + "Payment " + "Refund, " + "Customer ' + "Advance/Customer " + "Payment, " + "Credit ' + "Note " + "Refund, " + "Payment ' + "Refund. " + "Hence, " + "refer " + "them " + "in " + "their " + "repective " + "modules.
", + "example": "deposit", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "CATEGORIZEBANKTRANSACTION_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "bank_charges": { + "description": "Bank Charges applied to the transaction", + "example": 0, + "format": "double", + "type": "number", + }, + "currency_id": { + "description": "The currency ID involved in the transaction.", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": {"description": "Index of the custom field", "type": "integer"}, + "label": {"description": "Label of the Custom Field", "type": "string"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "ID of the customer or vendor.", + "example": "460000000000111", + "type": "string", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "documents": { + "description": "List of files to be attached to a particular transaction.", + "items": { + "properties": { + "document_id": {"description": "Unique ID of the attached file."}, + "file_name": {"description": "Name of the attached file."}, + }, + "type": "object", + }, + "type": "array", + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "from_account_id": { + "description": "The account ID from which money " + "will be transferred(Mandatory for " + "specific type of transactions). " + "These accounts differ with respect " + "to transaction_type. Ex: To a bank " + "account, from-account can be: bank " + ", card, income, refund. To a card " + "account, from account can be: " + "bank, card, refund.", + "example": "460000000070003", + "type": "string", + }, + "from_account_tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "is_inclusive_tax": { + "description": "Check if transaction is tax Inclusive", + "example": False, + "type": "boolean", + }, + "line_items": { + "items": { + "properties": { + "account_id": { + "description": "Mandatory " + "Account " + "id " + "for " + "which " + "transactions " + "are " + "to " + "be " + "listed.", + "example": "460000000048001", + "type": "string", + }, + "account_name": { + "description": "Name of the Account", + "example": "Petty Cash", + "type": "string", + }, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "item_order": { + "description": "Order of the Item", + "example": 1, + "type": "integer", + }, + "item_total": { + "description": "Total of the Item", + "example": 7500, + "format": "double", + "type": "number", + }, + "item_total_inclusive_of_tax": { + "description": "Total of the Item inclusive of Tax", + "example": 7500, + "format": "double", + "type": "number", + }, + "line_id": { + "description": "ID of the Line in Bank Transactions", + "example": "46000000001234", + "format": "int64", + "type": "integer", + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_amount": { + "description": "Amount of Tax", + "example": 0, + "format": "double", + "type": "number", + }, + "tax_id": { + "description": "ID of the tax or tax group applied", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_name": {"description": "Name of the Tax", "type": "string"}, + "tax_percentage": { + "description": "Percentage of the Tax", + "example": 0, + "format": "double", + "type": "number", + }, + "tax_type": {"example": "tax", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "payment_mode": { + "description": "Mode of payment for the transaction. " + "(not applicable for transfer_fund, " + "card_payment, owner_drawings). " + "Ex:cash, cheque, etc.,", + "example": "Cash", + "type": "string", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_authority_id": { + "description": "ID of the Tax Authority", + "type": "string", + "x-node_available_in": ["us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group applied", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "to_account_id": { + "description": "ID of the account to which the money " + "gets transferred(Mandatory for " + "specific type of transactions). Ex: " + "From a bank account, to-account can " + "be: bank, card, drawings, " + "expense,credit notes. From a card " + "account, to-account can be: card, " + "bank, expense.", + "example": "460000000048001", + "type": "string", + }, + "to_account_tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "transaction_type": { + "description": "Type of the transaction.
" + "Allowed transaction " + "types : deposit, " + "refund(*Supported only in Credit " + "Card accounts), transfer_fund, " + "card_payment, " + "sales_without_invoices, " + "expense_refund, " + "owner_contribution, " + "interest_income, other_income, " + "owner_drawings, sales_return
" + "Note: You will " + "not be able to create the " + "following module-specific " + "transaction types under Bank " + "Transaction endpoints :
Expense, Vendor ' + "Advance/Vendor Payment/Bill " + "Payment, Vendor ' + "Credit Refund, Vendor ' + "Payment Refund, Customer ' + "Advance/Customer Payment, Credit ' + "Note Refund, Payment ' + "Refund. Hence, refer them in " + "their repective modules.
", + "example": "deposit", + "type": "string", + }, + "user_id": { + "description": "ID of the User involved in the Transaction", + "format": "int64", + "type": "integer", + }, + }, + "required": ["transaction_type"], + "type": "object", + }, + "CATEGORIZEBANKTRANSACTIONASEXPENSE_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "Mandatory Account id for which transactions are to be listed.", + "example": "460000000048001", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) This is the ID of " + "the tax applied in case this is " + "an EU - goods purchase or " + "expense and acquisition VAT " + "needs to be reported.", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "can_reclaim_vat_on_mileage": { + "description": "Check if VAT can be reclaimed on mileage", + "type": "boolean", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "currency_id": { + "description": "The currency ID involved in the transaction.", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the custom field", "type": "integer"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "ID of the customer or vendor.", + "example": "460000000000111", + "type": "string", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "distance": { + "description": "Distance Covered", + "example": 4, + "format": "double", + "type": "number", + }, + "documents": { + "description": "List of files to be attached to a particular transaction.", + "items": { + "properties": { + "document_id": {"description": "Unique ID of the attached file."}, + "file_name": {"description": "Name of the attached file."}, + }, + "type": "object", + }, + "type": "array", + }, + "employee_id": { + "description": "ID of the Employee", + "format": "int64", + "type": "integer", + }, + "end_reading": {"description": "End Reading of the Odometer", "type": "string"}, + "engine_capacity_range": { + "description": "Type of Fuel Used. Allowed " + "Values : " + "less_than_1400cc, " + "between_1401cc_and_1600cc, " + "between_1601cc_and_2000cc " + "and " + "more_than_2000cc", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "expense_type": { + "description": "Type of Expense", + "example": "non_mileage", + "type": "string", + }, + "fuel_type": { + "description": "Type of Fuel Used. Allowed Values : " + "petrol, lpg, " + "diesel", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "is_billable": { + "description": "A boolean value to specify if the expense is billable.", + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Check if transaction is tax Inclusive", + "example": False, + "type": "boolean", + }, + "is_update_customer": { + "description": "Check if Customer should be updated", + "example": False, + "type": "boolean", + }, + "line_items": { + "items": { + "properties": { + "account_id": { + "description": "Mandatory " + "Account " + "id " + "for " + "which " + "transactions " + "are " + "to " + "be " + "listed.", + "example": "460000000048001", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "purchase " + "or " + "expense " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "item_order": { + "description": "Order of the Item", + "example": 1, + "type": "integer", + }, + "line_item_id": { + "description": "ID of the Line Item", + "example": "460000000012834", + "format": "int64", + "type": "integer", + }, + "product_type": { + "description": "Type " + "of " + "the " + "transaction. " + "This " + "denotes " + "whether " + "the " + "transaction " + "line " + "item " + "is " + "to " + "be " + "treated " + "as " + "goods " + "or " + "as " + "a " + "service. " + "Allowed " + "Values: " + "
" + "For " + "UK " + "and " + "Europe: " + "digital_service, " + "goods " + "and " + "service.
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "type": "string", + "x-node_available_in": ["uk", "eu", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "purchase " + "or " + "expense " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group applied", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + }, + "type": "object", + }, + "type": "array", + }, + "mileage_rate": { + "description": "Mileage Rate to be Applied", + "example": 0, + "format": "double", + "type": "number", + }, + "mileage_type": { + "description": "Type of Mileage. Allowed Values : " + "gmaps,imaps,gps,odometer,wmaps,manual,non_mileage " + "and per_diem", + "example": "non_mileage", + "type": "string", + }, + "mileage_unit": {"description": "Unit of Mileage", "example": "km", "type": "string"}, + "paid_through_account_id": { + "description": "ID of the credit/ bank account the payment is made.", + "example": "460000000000358", + "type": "string", + }, + "product_type": { + "description": "Type of the transaction. This denotes " + "whether the transaction line item is " + "to be treated as goods or as a " + "service. Allowed Values:
For " + "UK and Europe: " + "digital_service, " + "goods and " + "service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "type": "string", + "x-node_available_in": ["uk", "eu", "za"], + "x-node_unavailable_in": [], + }, + "project_id": { + "description": "ID of the project associated with the expense.", + "type": "string", + }, + "reason": {"description": "Reason", "type": "string"}, + "recurring_expense_id": { + "description": "ID of the Recurring Expense", + "format": "int64", + "type": "integer", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "(Optional) This is the ID of " + "the tax applied in case this " + "is a non UK - service " + "purchase or expense and " + "reverse charge VAT needs to " + "be reported.", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "start_reading": {"description": "Start Reading of the Odometer", "type": "string"}, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group applied", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_treatment": { + "description": "VAT treatment for the bank " + "transaction.Choose whether the " + "contact falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "ke", "za"], + "x-node_unavailable_in": [], + }, + "taxes": { + "items": { + "properties": { + "tax_amount": { + "description": "Amount of Tax", + "example": 0, + "format": "double", + "type": "number", + }, + "tax_id": { + "description": "ID of the tax or tax group applied", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_name": {"description": "Name of the Tax", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "vat_treatment": { + "description": "VAT treatment for the bank " + "transaction. VAT treatment denotes " + "the location of the customer or " + "vendor. If the customer or vendor " + "resides in the UK then the VAT " + "treatment is uk. If the " + "customer or vendor is in an EU " + "country & VAT registered, you are " + "resides in Northen Ireland and " + "purchasing/selling Goods then his " + "VAT treatment is " + "eu_vat_registered. And, " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas.", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "vehicle_id": {"description": "ID of the Vehicle", "type": "string"}, + "vendor_id": { + "description": "ID of the Vendor", + "example": "460000000026049", + "type": "string", + }, + "zcrm_potential_id": {"format": "int64", "type": "integer"}, + "zp_client_id": {"description": "ID of client", "format": "int64", "type": "integer"}, + "zp_project_id": { + "description": "ID of the Project", + "format": "int64", + "type": "integer", + }, + "zp_project_name": {"description": "Name of the Project", "type": "string"}, + }, + "type": "object", + }, + "CATEGORIZETRANSACTIONASVENDORPAYMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "bills": { + "items": { + "properties": { + "amount_applied": { + "description": "Amount applied to the Entity", + "example": 150, + "format": "double", + "type": "number", + }, + "bill_id": { + "description": "ID of the Bill", + "example": "460000000053199", + "type": "string", + }, + "bill_payment_id": { + "description": "ID of the Bill Payment", + "type": "string", + }, + "tax_amount_withheld": {"example": 0, "format": "double", "type": "number"}, + }, + "type": "object", + }, + "type": "array", + }, + "check_details": { + "items": { + "properties": { + "check_number": { + "description": "Number of the Check Created", + "type": "string", + }, + "memo": {"type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the custom field", "type": "integer"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "is_paid_via_print_check": { + "description": "Is the entity paid via print check", + "example": False, + "type": "boolean", + "x-node_available_in": ["us", "ca"], + "x-node_unavailable_in": [], + }, + "paid_through_account_id": { + "description": "ID of the credit/ bank account the payment is made.", + "example": "460000000000358", + "type": "string", + }, + "payment_mode": { + "description": "Mode of payment for the transaction. " + "(not applicable for transfer_fund, " + "card_payment, owner_drawings). " + "Ex:cash, cheque, etc.,", + "example": "Cash", + "type": "string", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "vendor_id": { + "description": "ID of the Vendor", + "example": "460000000026049", + "type": "string", + }, + }, + "type": "object", + }, + "CATEGORIZETRANSACTIONASPAYMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "Mandatory Account id for which transactions are to be listed.", + "example": "460000000048001", + "type": "string", + }, + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "bank_charges": { + "description": "Bank Charges applied to the transaction", + "example": 0, + "format": "double", + "type": "number", + }, + "contact_persons": { + "description": "Array of contact person(s) for whom invoice has to be sent.", + "example": ["460000000870911", "460000000870915"], + "items": {"type": "string"}, + "type": "array", + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the custom field", "type": "integer"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "ID of the customer or vendor.", + "example": "460000000000111", + "type": "string", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "documents": { + "description": "List of files to be attached to a particular transaction.", + "items": { + "properties": { + "document_id": {"description": "Unique ID of the attached file."}, + "file_name": {"description": "Name of the attached file."}, + }, + "type": "object", + }, + "type": "array", + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "invoices": { + "items": { + "properties": { + "amount_applied": { + "description": "Amount applied to the Entity", + "example": 150, + "format": "double", + "type": "number", + }, + "discount_amount": { + "description": "Amount of discount in the Invoice", + "example": 20, + "format": "double", + "type": "number", + }, + "invoice_id": { + "description": "ID of the Invoice", + "example": "460000000000481", + "format": "int64", + "type": "integer", + }, + "invoice_payment_id": { + "description": "ID of the Invoice Payment", + "example": "460000000134123", + "format": "int64", + "type": "integer", + }, + "tax_amount_withheld": {"example": 0, "format": "double", "type": "number"}, + }, + "type": "object", + }, + "type": "array", + }, + "payment_mode": { + "description": "Mode of payment for the transaction. " + "(not applicable for transfer_fund, " + "card_payment, owner_drawings). " + "Ex:cash, cheque, etc.,", + "example": "Cash", + "type": "string", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "retainerinvoice_id": { + "description": "ID of the Retainer Invoice", + "format": "int64", + "type": "integer", + }, + "template_id": { + "description": "ID of the template", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "CATEGORIZETRANSACTIONASREFUND_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "creditnote_id": { + "description": "ID of the credit note that has to be refunded.", + "example": "4000000030049", + "type": "string", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "from_account_id": { + "description": "The account ID from which money " + "will be transferred(Mandatory for " + "specific type of transactions). " + "These accounts differ with respect " + "to transaction_type. Ex: To a bank " + "account, from-account can be: bank " + ", card, income, refund. To a card " + "account, from account can be: " + "bank, card, refund.", + "example": "460000000070003", + "type": "string", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "refund_mode": { + "description": "Mode of refund. Ex - Cash, Cheque etc.,", + "example": "Cash", + "type": "string", + }, + }, + "required": ["creditnote_id", "date"], + "type": "object", + }, + "CATEGORIZEREFUNDVENDORCREDIT_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "Mandatory Account id for which transactions are to be listed.", + "example": "460000000048001", + "type": "string", + }, + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "refund_mode": { + "description": "Mode of refund. Ex - Cash, Cheque etc.,", + "example": "Cash", + "type": "string", + }, + "vendor_credit_id": { + "description": "ID of the vendor credit that has to be refunded.", + "example": "460000000030049", + "type": "string", + }, + }, + "required": ["vendor_credit_id", "date"], + "type": "object", + }, + "CATEGORIZEBANKTRANSACTIONPAYMENTREFUND_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "from_account_id": { + "description": "The account ID from which money " + "will be transferred(Mandatory for " + "specific type of transactions). " + "These accounts differ with respect " + "to transaction_type. Ex: To a bank " + "account, from-account can be: bank " + ", card, income, refund. To a card " + "account, from account can be: " + "bank, card, refund.", + "example": "460000000070003", + "type": "string", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "refund_mode": { + "description": "Mode of refund. Ex - Cash, Cheque etc.,", + "example": "Cash", + "type": "string", + }, + }, + "required": ["date", "amount", "from_account_id"], + "type": "object", + }, + "CATEGORIZEVENDORPAYMENTREFUND_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount of the transaction", + "example": 2000, + "format": "double", + "type": "number", + }, + "date": {"description": "Transaction date.", "example": "2013-10-01", "type": "string"}, + "description": { + "description": "A brief description about the transaction.", + "type": "string", + }, + "exchange_rate": { + "description": "The foreign currency exchange rate value.", + "example": 1, + "type": "integer", + }, + "reference_number": { + "description": "Reference Number of the transaction", + "example": "Ref-121", + "type": "string", + }, + "refund_mode": { + "description": "Mode of refund. Ex - Cash, Cheque etc.,", + "example": "Cash", + "type": "string", + }, + "to_account_id": { + "description": "ID of the account to which the money " + "gets transferred(Mandatory for " + "specific type of transactions). Ex: " + "From a bank account, to-account can " + "be: bank, card, drawings, " + "expense,credit notes. From a card " + "account, to-account can be: card, " + "bank, expense.", + "example": "460000000048001", + "type": "string", + }, + "vendorpayment_id": { + "description": "Vendor Payment to which you want to record the refund.", + "example": "460000000012345", + "type": "string", + }, + }, + "required": ["date", "amount", "to_account_id"], + "type": "object", + }, + "CREATECURRENCYADJUSTMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment_date": { + "description": "Date of adjustment.", + "example": "2013-09-05", + "type": "string", + }, + "currency_id": { + "description": "ID of currency for which we need to post adjustment.", + "example": "460000000000109", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate of the currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "notes": { + "description": "Notes for base currency adjustment.", + "example": "Base Currency Adjustment against EUR", + "type": "string", + }, + }, + "required": ["currency_id", "adjustment_date", "exchange_rate", "notes"], + "type": "object", + }, + "CREATEVENDORBILL_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Additional amount added to or " + "subtracted from bill total. Positive " + "values increase total, negative values " + "decrease total. Used for discounts, " + "surcharges, rounding adjustments, or " + "other modifications. Affects final bill " + "amount, tax calculations, and payment " + "processing.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Text description explaining " + "the reason for bill " + "adjustment. Examples: " + '"Early payment discount", ' + '"Volume discount", ' + '"Rounding adjustment", ' + '"Handling fee". Helps in ' + "audit trails and reporting. " + "Required when adjustment " + "amount is non-zero. Used in " + "financial reports, tax " + "returns, and vendor " + "communications. Should be " + "clear and specific for " + "compliance purposes.", + "example": " ", + "type": "string", + }, + "approvers": { + "items": { + "properties": { + "approver_id": { + "description": "ID of the Approver", + "format": "int64", + "type": "integer", + }, + "order": {"description": "Order of the Approver", "type": "integer"}, + }, + "type": "object", + }, + "type": "array", + }, + "bill_number": { + "description": "Unique sequential identifier for the " + "bill. Used for tracking and reference " + "purposes. Format varies by " + "organization settings. Can be " + "auto-generated or manually entered. " + "Must be unique within the " + "organization.", + "example": "00454", + "type": "string", + }, + "currency_id": { + "description": "Unique identifier for the currency " + "used in the bill transaction. Can be " + "fetched from the Currencies API if " + "multi-currency is enabled.", + "example": "460000000000099", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the custom field", "type": "integer"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "Date when the bill was issued by the vendor. " + "Format: yyyy-mm-dd. Used for payment terms " + "and aging calculations. This date determines " + "when payment terms begin and affects aging " + "reports, late payment calculations, and " + "financial reporting.", + "example": "2013-09-11", + "type": "string", + }, + "destination_of_supply": { + "description": "State code where " + "goods/services are " + "delivered. Used for GST " + "calculations in India. " + "Defaults to organization " + "home state if not specified. " + "Supports 2-letter state " + "codes (e.g., AP for Andhra " + "Pradesh, TN for Tamil Nadu).", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "documents": { + "items": { + "properties": { + "document_id": { + "description": "ID of the Document", + "format": "int64", + "type": "integer", + }, + "file_name": {"description": "Name of the file", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "due_date": { + "description": "Date when payment is due for the bill. " + "Used for payment tracking, aging reports, " + "and overdue calculations. Calculated " + "based on bill date and payment terms. " + "Bills become overdue after this date, " + "affecting vendor relationships and cash " + "flow planning.", + "example": "2013-09-26", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate from bill currency to " + "organization base currency. Used for " + "multi-currency transactions. 1.0 " + "indicates same as base currency. " + "Required when currency differs from " + "organization default. Affects " + "financial reporting, profit/loss " + "calculations, and tax computations. " + "Can be manually set or auto-fetched " + "from currency exchange services.", + "example": 1.23, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_inclusive_tax": { + "description": "Flag indicating whether line item " + "rates include tax amounts. When " + "true, tax is calculated on top of " + "displayed rates. When false, tax " + "is added separately. Affects " + "total calculations and tax " + "reporting. Common in countries " + "where tax-inclusive pricing is " + "standard. Impacts customer-facing " + "documents and tax return " + "preparation.", + "example": False, + "type": "boolean", + "x-node_unavailable_in": ["us"], + }, + "is_item_level_tax_calc": { + "description": "Flag indicating whether " + "taxes are calculated at " + "individual line item level " + "rather than bill total. " + "Enables different tax rates " + "for different items. " + "Provides more accurate tax " + "calculations for mixed tax " + "scenarios. When enabled, " + "each line item can have " + "different tax rates based " + "on item type, location, or " + "tax rules. Improves tax " + "compliance and reporting " + "accuracy.", + "example": False, + "type": "boolean", + }, + "is_update_customer": { + "description": "Flag to determine if customer " + "information should be updated " + "when creating the bill.", + "example": False, + "type": "boolean", + }, + "line_items": { + "description": "Line items of a bill.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "for " + "the " + "chart " + "of " + "accounts " + "entry. " + "Can " + "be " + "fetched " + "from " + "the " + "Chart " + "of " + "Accounts " + "API. " + "Determines " + "how " + "this " + "expense " + "is " + "categorized " + "in " + "financial " + "reports " + "and " + "general " + "ledger. " + "Required " + "for " + "proper " + "expense " + "classification " + "and " + "accounting " + "compliance.", + "example": "460000000000403", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "purchase " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "customer_id": {"description": "ID of the Customer", "type": "string"}, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item. " + "Provides " + "additional " + "context " + "about " + "the " + "product, " + "service, " + "or " + "expense. " + "Used " + "for " + "vendor " + "communication, " + "internal " + "documentation, " + "and " + "expense " + "justification. " + "Can " + "include " + "specifications, " + "requirements, " + "or " + "special " + "instructions.", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "is_billable": { + "description": "Boolean " + "flag " + "indicating " + "whether " + "the " + "line " + "item " + "or " + "entity " + "can " + "be " + "billed " + "to " + "customers " + "or " + "clients. " + "Determines " + "if " + "costs " + "are " + "recoverable " + "through " + "customer " + "billing, " + "affects " + "project " + "profitability " + "calculations, " + "and " + "controls " + "expense " + "allocation " + "for " + "client " + "projects " + "and " + "service " + "delivery.", + "example": False, + "type": "boolean", + }, + "item_custom_fields": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": { + "description": "Index of the custom field", + "type": "integer", + }, + "label": { + "description": "Label of the Custom Field", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "product " + "or " + "service " + "item. " + "Can " + "be " + "fetched " + "from " + "the " + "Items " + "API. " + "When " + "specified, " + "automatically " + "populates " + "item " + "details " + "like " + "name, " + "description, " + "and " + "default " + "rates. " + "Required " + "for " + "inventory " + "tracking " + "and " + "item-based " + "reporting.", + "example": "460000000054135", + "type": "string", + }, + "item_order": {"example": 1, "type": "integer"}, + "line_item_id": { + "description": "Unique " + "identifier " + "for " + "this " + "specific " + "line " + "item " + "within " + "the " + "bill. " + "Auto-generated " + "when " + "line " + "item " + "is " + "created. " + "Used " + "for " + "updating, " + "deleting, " + "or " + "referencing " + "specific " + "line " + "items " + "in " + "API " + "operations.", + "example": "460000000067009", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "where " + "the " + "bill " + "transaction " + "occurs. " + "Used " + "for " + "multi-location " + "organizations " + "to " + "track " + "expenses " + "by " + "location. " + "Affects " + "reporting " + "and " + "tax " + "calculations " + "based " + "on " + "location-specific " + "rules. " + "Can " + "be " + "fetched " + "from " + "the " + "Locations " + "API. " + "Required " + "for " + "organizations " + "with " + "multiple " + "locations. " + "Influences " + "tax " + "rates, " + "reporting " + "structures, " + "and " + "approval " + "workflows " + "based " + "on " + "location-specific " + "configurations.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "or " + "description " + "of " + "the " + "line " + "item. " + "Can " + "be " + "manually " + "entered " + "or " + "auto-populated " + "from " + "item " + "details. " + "Should " + "clearly " + "describe " + "the " + "product, " + "service, " + "or " + "expense " + "for " + "vendor " + "and " + "accounting " + "purposes.", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "the " + "bill. " + "This " + "denotes " + "whether " + "the " + "bill " + "line " + "item " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "purchase. " + "This " + "only " + "need " + "to " + "be " + "specified " + "in " + "case " + "purchase " + "order " + "is " + "not " + "enabled. " + "Allowed " + "Values: " + " " + "digital_service, " + "goods " + "and " + "service.", + "type": "string", + "x-node_available_in": ["eu", "uk"], + "x-node_unavailable_in": [], + }, + "project_id": {"description": "ID of the Project", "type": "string"}, + "purchaseorder_item_id": { + "description": "Unique " + "identifier " + "linking " + "this " + "line " + "item " + "to " + "a " + "specific " + "item " + "in " + "the " + "purchase " + "order. " + "Used " + "for " + "tracking " + "PO-to-bill " + "conversions " + "and " + "maintaining " + "audit " + "trails. " + "Required " + "when " + "converting " + "purchase " + "orders " + "to " + "bills.", + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "for " + "the " + "line " + "item. " + "Used " + "to " + "calculate " + "line " + "item " + "totals " + "(quantity " + "x " + "rate). " + "Supports " + "decimal " + "quantities " + "for " + "items " + "sold " + "by " + "weight, " + "length, " + "or " + "other " + "non-whole " + "units. " + "Required " + "for " + "accurate " + "billing " + "and " + "inventory " + "tracking.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit " + "price " + "or " + "rate " + "for " + "the " + "line " + "item. " + "Can " + "be " + "manually " + "entered " + "or " + "auto-populated " + "from " + "item " + "details " + "or " + "price " + "books. " + "Used " + "to " + "calculate " + "line " + "item " + "totals. " + "Supports " + "decimal " + "precision " + "based " + "on " + "currency " + "settings.", + "example": 10, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "Reverse charge tax ID", + "example": 460000000038056, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "purchase " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "serial_numbers": {"items": {"type": "string"}, "type": "array"}, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "example": "460000000054178", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "example": "460000000054180", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "for " + "the " + "tax " + "or " + "tax " + "group " + "applied " + "to " + "this " + "line " + "item. " + "Can " + "be " + "fetched " + "from " + "the " + "Taxes " + "API. " + "Determines " + "tax " + "rate " + "and " + "calculations " + "for " + "the " + "line " + "item. " + "Required " + "when " + "tax " + "calculations " + "are " + "enabled. " + "Affects " + "final " + "line " + "item " + "total " + "and " + "tax " + "reporting.", + "example": "460000000027005", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "TDS " + "ID " + "of " + "the " + "tax " + "or " + "tax " + "group " + "applied " + "to " + "the " + "line " + "item", + "example": "460000000027009", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "item " + "quantity. " + "Examples: " + "pieces, " + "kgs, " + "liters, " + "hours, " + "days. " + "Used " + "for " + "accurate " + "billing " + "and " + "inventory " + "tracking. " + "Auto-populated " + "when " + "item_id " + "is " + "specified. " + "Important " + "for " + "vendor " + "communication " + "and " + "expense " + "categorization.", + "example": "kgs", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location where the bill transaction " + "occurs. Used for multi-location " + "organizations to track expenses by " + "location. Affects reporting and tax " + "calculations based on " + "location-specific rules. Can be " + "fetched from the Locations API. " + "Required for organizations with " + "multiple locations. Influences tax " + "rates, reporting structures, and " + "approval workflows based on " + "location-specific configurations.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional information or comments about the " + "bill. Used for internal communication, " + "vendor instructions, or special handling " + "requirements. Visible to vendors and " + "included in bill communications. Useful for " + "tracking special arrangements or payment " + "instructions.", + "example": "Thanks for your business.", + "type": "string", + }, + "payment_terms": { + "description": "Numeric identifier for payment terms " + "configuration. Defines when payment " + "is due relative to bill date. 0 = " + "Due on Receipt, positive numbers = " + "days after bill date, negative " + "numbers = days before bill date. " + "Common values: 0 (Due on Receipt), " + "15 (Net 15), 30 (Net 30), 45 (Net " + "45). Affects due date calculation " + "and aging reports.", + "example": 0, + "type": "integer", + }, + "payment_terms_label": { + "description": "Label of the Payment Terms", + "example": "Due on Receipt", + "type": "string", + }, + "permit_number": { + "description": "The permit number for the bill.", + "type": "string", + "x-node_available_in": ["uae"], + "x-node_unavailable_in": [], + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Identifier for the price book " + "containing item rates and pricing " + "rules. Used to apply standardized " + "pricing across bills. If not " + "specified, default pricing from items " + "will be used. Helps maintain " + "consistent pricing across multiple " + "transactions.", + "example": 460000000038090, + "type": "string", + }, + "purchaseorder_ids": { + "description": "Array of purchase order " + "identifiers linked to this bill " + "for tracking purposes.", + "example": [460000000068231, 460000000068233], + "items": {"type": "string"}, + "type": "array", + }, + "recurring_bill_id": { + "description": "Identifier linking this bill to " + "a recurring bill template. Used " + "for bills that are automatically " + "generated on a schedule (weekly, " + "monthly, quarterly, etc.). " + "Enables automated bill " + "generation, consistent billing " + "cycles, and reduces manual data " + "entry. Can be modified to change " + "recurring schedule.", + "type": "string", + }, + "reference_number": { + "description": "External reference number from " + "vendor invoice or purchase order. " + "Used for cross-referencing with " + "vendor documents. Helps in " + "reconciliation and tracking " + "payments. Can include invoice " + "numbers, PO references, or any " + "vendor-specific identifiers.", + "example": "4321133", + "type": "string", + }, + "source_of_supply": { + "description": "State code where goods/services " + "originate. Used for GST " + "calculations in India. Defaults " + "to vendor contact location if not " + "specified. Supports 2-letter " + "state codes (e.g., AP for Andhra " + "Pradesh, TN for Tamil Nadu).", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "VAT treatment for the bill. Choose " + "whether the vendor falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "taxes": { + "items": { + "properties": { + "tax_amount": { + "description": "Amount of Tax in the Bill", + "example": 1.25, + "type": "string", + }, + "tax_id": { + "description": "Unique " + "identifier " + "for the " + "tax or " + "tax " + "group " + "applied " + "to this " + "line " + "item. " + "Can be " + "fetched " + "from the " + "Taxes " + "API. " + "Determines " + "tax rate " + "and " + "calculations " + "for the " + "line " + "item. " + "Required " + "when tax " + "calculations " + "are " + "enabled. " + "Affects " + "final " + "line " + "item " + "total " + "and tax " + "reporting.", + "example": "460000000027005", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_name": { + "description": "Name of the Tax", + "example": "VAT (12.5%)", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "terms": { + "description": "Terms and conditions that apply to the bill " + "transaction. Includes payment terms, " + "delivery conditions, warranty information, " + "or other contractual obligations. Displayed " + "on bill documents and vendor communications. " + "Important for legal compliance and vendor " + "relationship management.", + "example": "Terms and conditions apply.", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "bill. VAT treatment denotes the " + "location of the vendor, if the " + "vendor resides in UK then the VAT " + "treatment is uk. If the " + "vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "Unique identifier for the vendor who " + "supplied the goods/services. Can be " + "fetched from the Get Contacts API.", + "example": "460000000038029", + "type": "string", + }, + }, + "required": ["vendor_id", "bill_number"], + "type": "object", + }, + "UPDATEBILLBYCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Additional amount added to or " + "subtracted from bill total. Positive " + "values increase total, negative values " + "decrease total. Used for discounts, " + "surcharges, rounding adjustments, or " + "other modifications. Affects final bill " + "amount, tax calculations, and payment " + "processing.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Text description explaining " + "the reason for bill " + "adjustment. Examples: " + '"Early payment discount", ' + '"Volume discount", ' + '"Rounding adjustment", ' + '"Handling fee". Helps in ' + "audit trails and reporting. " + "Required when adjustment " + "amount is non-zero. Used in " + "financial reports, tax " + "returns, and vendor " + "communications. Should be " + "clear and specific for " + "compliance purposes.", + "example": " ", + "type": "string", + }, + "approvers": { + "items": { + "properties": { + "approver_id": { + "description": "ID of the Approver", + "format": "int64", + "type": "integer", + }, + "order": {"description": "Order of the Approver", "type": "integer"}, + }, + "type": "object", + }, + "type": "array", + }, + "bill_number": { + "description": "Unique sequential identifier for the " + "bill. Used for tracking and reference " + "purposes. Format varies by " + "organization settings. Can be " + "auto-generated or manually entered. " + "Must be unique within the " + "organization.", + "example": "00454", + "type": "string", + }, + "currency_id": { + "description": "Unique identifier for the currency " + "used in the bill transaction. Can be " + "fetched from the Currencies API if " + "multi-currency is enabled.", + "example": "460000000000099", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the custom field", "type": "integer"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "Date when the bill was issued by the vendor. " + "Format: yyyy-mm-dd. Used for payment terms " + "and aging calculations. This date determines " + "when payment terms begin and affects aging " + "reports, late payment calculations, and " + "financial reporting.", + "example": "2013-09-11", + "type": "string", + }, + "destination_of_supply": { + "description": "State code where " + "goods/services are " + "delivered. Used for GST " + "calculations in India. " + "Defaults to organization " + "home state if not specified. " + "Supports 2-letter state " + "codes (e.g., AP for Andhra " + "Pradesh, TN for Tamil Nadu).", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "documents": { + "items": { + "properties": { + "document_id": { + "description": "ID of the Document", + "format": "int64", + "type": "integer", + }, + "file_name": {"description": "Name of the file", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "due_date": { + "description": "Date when payment is due for the bill. " + "Used for payment tracking, aging reports, " + "and overdue calculations. Calculated " + "based on bill date and payment terms. " + "Bills become overdue after this date, " + "affecting vendor relationships and cash " + "flow planning.", + "example": "2013-09-26", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate from bill currency to " + "organization base currency. Used for " + "multi-currency transactions. 1.0 " + "indicates same as base currency. " + "Required when currency differs from " + "organization default. Affects " + "financial reporting, profit/loss " + "calculations, and tax computations. " + "Can be manually set or auto-fetched " + "from currency exchange services.", + "example": 1.23, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_inclusive_tax": { + "description": "Flag indicating whether line item " + "rates include tax amounts. When " + "true, tax is calculated on top of " + "displayed rates. When false, tax " + "is added separately. Affects " + "total calculations and tax " + "reporting. Common in countries " + "where tax-inclusive pricing is " + "standard. Impacts customer-facing " + "documents and tax return " + "preparation.", + "example": False, + "type": "boolean", + "x-node_unavailable_in": ["us"], + }, + "is_item_level_tax_calc": { + "description": "Flag indicating whether " + "taxes are calculated at " + "individual line item level " + "rather than bill total. " + "Enables different tax rates " + "for different items. " + "Provides more accurate tax " + "calculations for mixed tax " + "scenarios. When enabled, " + "each line item can have " + "different tax rates based " + "on item type, location, or " + "tax rules. Improves tax " + "compliance and reporting " + "accuracy.", + "example": False, + "type": "boolean", + }, + "is_update_customer": { + "description": "Flag to determine if customer " + "information should be updated " + "when creating the bill.", + "example": False, + "type": "boolean", + }, + "line_items": { + "description": "Line items of a bill.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "for " + "the " + "chart " + "of " + "accounts " + "entry. " + "Can " + "be " + "fetched " + "from " + "the " + "Chart " + "of " + "Accounts " + "API. " + "Determines " + "how " + "this " + "expense " + "is " + "categorized " + "in " + "financial " + "reports " + "and " + "general " + "ledger. " + "Required " + "for " + "proper " + "expense " + "classification " + "and " + "accounting " + "compliance.", + "example": "460000000000403", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "purchase " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "customer_id": {"description": "ID of the Customer", "type": "string"}, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item. " + "Provides " + "additional " + "context " + "about " + "the " + "product, " + "service, " + "or " + "expense. " + "Used " + "for " + "vendor " + "communication, " + "internal " + "documentation, " + "and " + "expense " + "justification. " + "Can " + "include " + "specifications, " + "requirements, " + "or " + "special " + "instructions.", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "is_billable": { + "description": "Boolean " + "flag " + "indicating " + "whether " + "the " + "line " + "item " + "or " + "entity " + "can " + "be " + "billed " + "to " + "customers " + "or " + "clients. " + "Determines " + "if " + "costs " + "are " + "recoverable " + "through " + "customer " + "billing, " + "affects " + "project " + "profitability " + "calculations, " + "and " + "controls " + "expense " + "allocation " + "for " + "client " + "projects " + "and " + "service " + "delivery.", + "example": False, + "type": "boolean", + }, + "item_custom_fields": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": { + "description": "Index of the custom field", + "type": "integer", + }, + "label": { + "description": "Label of the Custom Field", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "product " + "or " + "service " + "item. " + "Can " + "be " + "fetched " + "from " + "the " + "Items " + "API. " + "When " + "specified, " + "automatically " + "populates " + "item " + "details " + "like " + "name, " + "description, " + "and " + "default " + "rates. " + "Required " + "for " + "inventory " + "tracking " + "and " + "item-based " + "reporting.", + "example": "460000000054135", + "type": "string", + }, + "item_order": {"example": 1, "type": "integer"}, + "line_item_id": { + "description": "Unique " + "identifier " + "for " + "this " + "specific " + "line " + "item " + "within " + "the " + "bill. " + "Auto-generated " + "when " + "line " + "item " + "is " + "created. " + "Used " + "for " + "updating, " + "deleting, " + "or " + "referencing " + "specific " + "line " + "items " + "in " + "API " + "operations.", + "example": "460000000067009", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "where " + "the " + "bill " + "transaction " + "occurs. " + "Used " + "for " + "multi-location " + "organizations " + "to " + "track " + "expenses " + "by " + "location. " + "Affects " + "reporting " + "and " + "tax " + "calculations " + "based " + "on " + "location-specific " + "rules. " + "Can " + "be " + "fetched " + "from " + "the " + "Locations " + "API. " + "Required " + "for " + "organizations " + "with " + "multiple " + "locations. " + "Influences " + "tax " + "rates, " + "reporting " + "structures, " + "and " + "approval " + "workflows " + "based " + "on " + "location-specific " + "configurations.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "or " + "description " + "of " + "the " + "line " + "item. " + "Can " + "be " + "manually " + "entered " + "or " + "auto-populated " + "from " + "item " + "details. " + "Should " + "clearly " + "describe " + "the " + "product, " + "service, " + "or " + "expense " + "for " + "vendor " + "and " + "accounting " + "purposes.", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "the " + "bill. " + "This " + "denotes " + "whether " + "the " + "bill " + "line " + "item " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "purchase. " + "This " + "only " + "need " + "to " + "be " + "specified " + "in " + "case " + "purchase " + "order " + "is " + "not " + "enabled. " + "Allowed " + "Values: " + " " + "digital_service, " + "goods " + "and " + "service.", + "type": "string", + "x-node_available_in": ["eu", "uk"], + "x-node_unavailable_in": [], + }, + "project_id": {"description": "ID of the Project", "type": "string"}, + "purchaseorder_item_id": { + "description": "Unique " + "identifier " + "linking " + "this " + "line " + "item " + "to " + "a " + "specific " + "item " + "in " + "the " + "purchase " + "order. " + "Used " + "for " + "tracking " + "PO-to-bill " + "conversions " + "and " + "maintaining " + "audit " + "trails. " + "Required " + "when " + "converting " + "purchase " + "orders " + "to " + "bills.", + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "for " + "the " + "line " + "item. " + "Used " + "to " + "calculate " + "line " + "item " + "totals " + "(quantity " + "x " + "rate). " + "Supports " + "decimal " + "quantities " + "for " + "items " + "sold " + "by " + "weight, " + "length, " + "or " + "other " + "non-whole " + "units. " + "Required " + "for " + "accurate " + "billing " + "and " + "inventory " + "tracking.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit " + "price " + "or " + "rate " + "for " + "the " + "line " + "item. " + "Can " + "be " + "manually " + "entered " + "or " + "auto-populated " + "from " + "item " + "details " + "or " + "price " + "books. " + "Used " + "to " + "calculate " + "line " + "item " + "totals. " + "Supports " + "decimal " + "precision " + "based " + "on " + "currency " + "settings.", + "example": 10, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "Reverse charge tax ID", + "example": 460000000038056, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "purchase " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "serial_numbers": {"items": {"type": "string"}, "type": "array"}, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "example": "460000000054178", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "example": "460000000054180", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "for " + "the " + "tax " + "or " + "tax " + "group " + "applied " + "to " + "this " + "line " + "item. " + "Can " + "be " + "fetched " + "from " + "the " + "Taxes " + "API. " + "Determines " + "tax " + "rate " + "and " + "calculations " + "for " + "the " + "line " + "item. " + "Required " + "when " + "tax " + "calculations " + "are " + "enabled. " + "Affects " + "final " + "line " + "item " + "total " + "and " + "tax " + "reporting.", + "example": "460000000027005", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "TDS " + "ID " + "of " + "the " + "tax " + "or " + "tax " + "group " + "applied " + "to " + "the " + "line " + "item", + "example": "460000000027009", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "item " + "quantity. " + "Examples: " + "pieces, " + "kgs, " + "liters, " + "hours, " + "days. " + "Used " + "for " + "accurate " + "billing " + "and " + "inventory " + "tracking. " + "Auto-populated " + "when " + "item_id " + "is " + "specified. " + "Important " + "for " + "vendor " + "communication " + "and " + "expense " + "categorization.", + "example": "kgs", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location where the bill transaction " + "occurs. Used for multi-location " + "organizations to track expenses by " + "location. Affects reporting and tax " + "calculations based on " + "location-specific rules. Can be " + "fetched from the Locations API. " + "Required for organizations with " + "multiple locations. Influences tax " + "rates, reporting structures, and " + "approval workflows based on " + "location-specific configurations.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional information or comments about the " + "bill. Used for internal communication, " + "vendor instructions, or special handling " + "requirements. Visible to vendors and " + "included in bill communications. Useful for " + "tracking special arrangements or payment " + "instructions.", + "example": "Thanks for your business.", + "type": "string", + }, + "payment_terms": { + "description": "Numeric identifier for payment terms " + "configuration. Defines when payment " + "is due relative to bill date. 0 = " + "Due on Receipt, positive numbers = " + "days after bill date, negative " + "numbers = days before bill date. " + "Common values: 0 (Due on Receipt), " + "15 (Net 15), 30 (Net 30), 45 (Net " + "45). Affects due date calculation " + "and aging reports.", + "example": 0, + "type": "integer", + }, + "payment_terms_label": { + "description": "Label of the Payment Terms", + "example": "Due on Receipt", + "type": "string", + }, + "permit_number": { + "description": "The permit number for the bill.", + "type": "string", + "x-node_available_in": ["uae"], + "x-node_unavailable_in": [], + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Identifier for the price book " + "containing item rates and pricing " + "rules. Used to apply standardized " + "pricing across bills. If not " + "specified, default pricing from items " + "will be used. Helps maintain " + "consistent pricing across multiple " + "transactions.", + "example": 460000000038090, + "type": "string", + }, + "purchaseorder_ids": { + "description": "Array of purchase order " + "identifiers linked to this bill " + "for tracking purposes.", + "example": [460000000068231, 460000000068233], + "items": {"type": "string"}, + "type": "array", + }, + "recurring_bill_id": { + "description": "Identifier linking this bill to " + "a recurring bill template. Used " + "for bills that are automatically " + "generated on a schedule (weekly, " + "monthly, quarterly, etc.). " + "Enables automated bill " + "generation, consistent billing " + "cycles, and reduces manual data " + "entry. Can be modified to change " + "recurring schedule.", + "type": "string", + }, + "reference_number": { + "description": "External reference number from " + "vendor invoice or purchase order. " + "Used for cross-referencing with " + "vendor documents. Helps in " + "reconciliation and tracking " + "payments. Can include invoice " + "numbers, PO references, or any " + "vendor-specific identifiers.", + "example": "4321133", + "type": "string", + }, + "source_of_supply": { + "description": "State code where goods/services " + "originate. Used for GST " + "calculations in India. Defaults " + "to vendor contact location if not " + "specified. Supports 2-letter " + "state codes (e.g., AP for Andhra " + "Pradesh, TN for Tamil Nadu).", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "VAT treatment for the bill. Choose " + "whether the vendor falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "taxes": { + "items": { + "properties": { + "tax_amount": { + "description": "Amount of Tax in the Bill", + "example": 1.25, + "type": "string", + }, + "tax_id": { + "description": "Unique " + "identifier " + "for the " + "tax or " + "tax " + "group " + "applied " + "to this " + "line " + "item. " + "Can be " + "fetched " + "from the " + "Taxes " + "API. " + "Determines " + "tax rate " + "and " + "calculations " + "for the " + "line " + "item. " + "Required " + "when tax " + "calculations " + "are " + "enabled. " + "Affects " + "final " + "line " + "item " + "total " + "and tax " + "reporting.", + "example": "460000000027005", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_name": { + "description": "Name of the Tax", + "example": "VAT (12.5%)", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "terms": { + "description": "Terms and conditions that apply to the bill " + "transaction. Includes payment terms, " + "delivery conditions, warranty information, " + "or other contractual obligations. Displayed " + "on bill documents and vendor communications. " + "Important for legal compliance and vendor " + "relationship management.", + "example": "Terms and conditions apply.", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "bill. VAT treatment denotes the " + "location of the vendor, if the " + "vendor resides in UK then the VAT " + "treatment is uk. If the " + "vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "Unique identifier for the vendor who " + "supplied the goods/services. Can be " + "fetched from the Get Contacts API.", + "example": "460000000038029", + "type": "string", + }, + }, + "required": ["vendor_id", "bill_number"], + "type": "object", + }, + "UPDATEBILLINZOHO_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Additional amount added to or " + "subtracted from bill total. Positive " + "values increase total, negative values " + "decrease total. Used for discounts, " + "surcharges, rounding adjustments, or " + "other modifications. Affects final bill " + "amount, tax calculations, and payment " + "processing.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Text description explaining " + "the reason for bill " + "adjustment. Examples: " + '"Early payment discount", ' + '"Volume discount", ' + '"Rounding adjustment", ' + '"Handling fee". Helps in ' + "audit trails and reporting. " + "Required when adjustment " + "amount is non-zero. Used in " + "financial reports, tax " + "returns, and vendor " + "communications. Should be " + "clear and specific for " + "compliance purposes.", + "example": " ", + "type": "string", + }, + "approvers": { + "items": { + "properties": { + "approver_id": { + "description": "ID of the Approver", + "format": "int64", + "type": "integer", + }, + "order": {"description": "Order of the Approver", "type": "integer"}, + }, + "type": "object", + }, + "type": "array", + }, + "bill_number": { + "description": "Unique sequential identifier for the " + "bill. Used for tracking and reference " + "purposes. Format varies by " + "organization settings. Can be " + "auto-generated or manually entered. " + "Must be unique within the " + "organization.", + "example": "00454", + "type": "string", + }, + "currency_id": { + "description": "Unique identifier for the currency " + "used in the bill transaction. Can be " + "fetched from the Currencies API if " + "multi-currency is enabled.", + "example": "460000000000099", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the custom field", "type": "integer"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "Date when the bill was issued by the vendor. " + "Format: yyyy-mm-dd. Used for payment terms " + "and aging calculations. This date determines " + "when payment terms begin and affects aging " + "reports, late payment calculations, and " + "financial reporting.", + "example": "2013-09-11", + "type": "string", + }, + "destination_of_supply": { + "description": "State code where " + "goods/services are " + "delivered. Used for GST " + "calculations in India. " + "Defaults to organization " + "home state if not specified. " + "Supports 2-letter state " + "codes (e.g., AP for Andhra " + "Pradesh, TN for Tamil Nadu).", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "documents": { + "items": { + "properties": { + "document_id": { + "description": "ID of the Document", + "format": "int64", + "type": "integer", + }, + "file_name": {"description": "Name of the file", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "due_date": { + "description": "Date when payment is due for the bill. " + "Used for payment tracking, aging reports, " + "and overdue calculations. Calculated " + "based on bill date and payment terms. " + "Bills become overdue after this date, " + "affecting vendor relationships and cash " + "flow planning.", + "example": "2013-09-26", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate from bill currency to " + "organization base currency. Used for " + "multi-currency transactions. 1.0 " + "indicates same as base currency. " + "Required when currency differs from " + "organization default. Affects " + "financial reporting, profit/loss " + "calculations, and tax computations. " + "Can be manually set or auto-fetched " + "from currency exchange services.", + "example": 1.23, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_inclusive_tax": { + "description": "Flag indicating whether line item " + "rates include tax amounts. When " + "true, tax is calculated on top of " + "displayed rates. When false, tax " + "is added separately. Affects " + "total calculations and tax " + "reporting. Common in countries " + "where tax-inclusive pricing is " + "standard. Impacts customer-facing " + "documents and tax return " + "preparation.", + "example": False, + "type": "boolean", + "x-node_unavailable_in": ["us"], + }, + "is_item_level_tax_calc": { + "description": "Flag indicating whether " + "taxes are calculated at " + "individual line item level " + "rather than bill total. " + "Enables different tax rates " + "for different items. " + "Provides more accurate tax " + "calculations for mixed tax " + "scenarios. When enabled, " + "each line item can have " + "different tax rates based " + "on item type, location, or " + "tax rules. Improves tax " + "compliance and reporting " + "accuracy.", + "example": False, + "type": "boolean", + }, + "is_update_customer": { + "description": "Flag to determine if customer " + "information should be updated " + "when creating the bill.", + "example": False, + "type": "boolean", + }, + "line_items": { + "description": "Line items of a bill.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "for " + "the " + "chart " + "of " + "accounts " + "entry. " + "Can " + "be " + "fetched " + "from " + "the " + "Chart " + "of " + "Accounts " + "API. " + "Determines " + "how " + "this " + "expense " + "is " + "categorized " + "in " + "financial " + "reports " + "and " + "general " + "ledger. " + "Required " + "for " + "proper " + "expense " + "classification " + "and " + "accounting " + "compliance.", + "example": "460000000000403", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "purchase " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "customer_id": {"description": "ID of the Customer", "type": "string"}, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item. " + "Provides " + "additional " + "context " + "about " + "the " + "product, " + "service, " + "or " + "expense. " + "Used " + "for " + "vendor " + "communication, " + "internal " + "documentation, " + "and " + "expense " + "justification. " + "Can " + "include " + "specifications, " + "requirements, " + "or " + "special " + "instructions.", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "is_billable": { + "description": "Boolean " + "flag " + "indicating " + "whether " + "the " + "line " + "item " + "or " + "entity " + "can " + "be " + "billed " + "to " + "customers " + "or " + "clients. " + "Determines " + "if " + "costs " + "are " + "recoverable " + "through " + "customer " + "billing, " + "affects " + "project " + "profitability " + "calculations, " + "and " + "controls " + "expense " + "allocation " + "for " + "client " + "projects " + "and " + "service " + "delivery.", + "example": False, + "type": "boolean", + }, + "item_custom_fields": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": { + "description": "Index of the custom field", + "type": "integer", + }, + "label": { + "description": "Label of the Custom Field", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "product " + "or " + "service " + "item. " + "Can " + "be " + "fetched " + "from " + "the " + "Items " + "API. " + "When " + "specified, " + "automatically " + "populates " + "item " + "details " + "like " + "name, " + "description, " + "and " + "default " + "rates. " + "Required " + "for " + "inventory " + "tracking " + "and " + "item-based " + "reporting.", + "example": "460000000054135", + "type": "string", + }, + "item_order": {"example": 1, "type": "integer"}, + "line_item_id": { + "description": "Unique " + "identifier " + "for " + "this " + "specific " + "line " + "item " + "within " + "the " + "bill. " + "Auto-generated " + "when " + "line " + "item " + "is " + "created. " + "Used " + "for " + "updating, " + "deleting, " + "or " + "referencing " + "specific " + "line " + "items " + "in " + "API " + "operations.", + "example": "460000000067009", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "where " + "the " + "bill " + "transaction " + "occurs. " + "Used " + "for " + "multi-location " + "organizations " + "to " + "track " + "expenses " + "by " + "location. " + "Affects " + "reporting " + "and " + "tax " + "calculations " + "based " + "on " + "location-specific " + "rules. " + "Can " + "be " + "fetched " + "from " + "the " + "Locations " + "API. " + "Required " + "for " + "organizations " + "with " + "multiple " + "locations. " + "Influences " + "tax " + "rates, " + "reporting " + "structures, " + "and " + "approval " + "workflows " + "based " + "on " + "location-specific " + "configurations.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "or " + "description " + "of " + "the " + "line " + "item. " + "Can " + "be " + "manually " + "entered " + "or " + "auto-populated " + "from " + "item " + "details. " + "Should " + "clearly " + "describe " + "the " + "product, " + "service, " + "or " + "expense " + "for " + "vendor " + "and " + "accounting " + "purposes.", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "the " + "bill. " + "This " + "denotes " + "whether " + "the " + "bill " + "line " + "item " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "purchase. " + "This " + "only " + "need " + "to " + "be " + "specified " + "in " + "case " + "purchase " + "order " + "is " + "not " + "enabled. " + "Allowed " + "Values: " + " " + "digital_service, " + "goods " + "and " + "service.", + "type": "string", + "x-node_available_in": ["eu", "uk"], + "x-node_unavailable_in": [], + }, + "project_id": {"description": "ID of the Project", "type": "string"}, + "purchaseorder_item_id": { + "description": "Unique " + "identifier " + "linking " + "this " + "line " + "item " + "to " + "a " + "specific " + "item " + "in " + "the " + "purchase " + "order. " + "Used " + "for " + "tracking " + "PO-to-bill " + "conversions " + "and " + "maintaining " + "audit " + "trails. " + "Required " + "when " + "converting " + "purchase " + "orders " + "to " + "bills.", + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "for " + "the " + "line " + "item. " + "Used " + "to " + "calculate " + "line " + "item " + "totals " + "(quantity " + "x " + "rate). " + "Supports " + "decimal " + "quantities " + "for " + "items " + "sold " + "by " + "weight, " + "length, " + "or " + "other " + "non-whole " + "units. " + "Required " + "for " + "accurate " + "billing " + "and " + "inventory " + "tracking.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit " + "price " + "or " + "rate " + "for " + "the " + "line " + "item. " + "Can " + "be " + "manually " + "entered " + "or " + "auto-populated " + "from " + "item " + "details " + "or " + "price " + "books. " + "Used " + "to " + "calculate " + "line " + "item " + "totals. " + "Supports " + "decimal " + "precision " + "based " + "on " + "currency " + "settings.", + "example": 10, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "Reverse charge tax ID", + "example": 460000000038056, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "purchase " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "serial_numbers": {"items": {"type": "string"}, "type": "array"}, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "example": "460000000054178", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "example": "460000000054180", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "for " + "the " + "tax " + "or " + "tax " + "group " + "applied " + "to " + "this " + "line " + "item. " + "Can " + "be " + "fetched " + "from " + "the " + "Taxes " + "API. " + "Determines " + "tax " + "rate " + "and " + "calculations " + "for " + "the " + "line " + "item. " + "Required " + "when " + "tax " + "calculations " + "are " + "enabled. " + "Affects " + "final " + "line " + "item " + "total " + "and " + "tax " + "reporting.", + "example": "460000000027005", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "TDS " + "ID " + "of " + "the " + "tax " + "or " + "tax " + "group " + "applied " + "to " + "the " + "line " + "item", + "example": "460000000027009", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "item " + "quantity. " + "Examples: " + "pieces, " + "kgs, " + "liters, " + "hours, " + "days. " + "Used " + "for " + "accurate " + "billing " + "and " + "inventory " + "tracking. " + "Auto-populated " + "when " + "item_id " + "is " + "specified. " + "Important " + "for " + "vendor " + "communication " + "and " + "expense " + "categorization.", + "example": "kgs", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location where the bill transaction " + "occurs. Used for multi-location " + "organizations to track expenses by " + "location. Affects reporting and tax " + "calculations based on " + "location-specific rules. Can be " + "fetched from the Locations API. " + "Required for organizations with " + "multiple locations. Influences tax " + "rates, reporting structures, and " + "approval workflows based on " + "location-specific configurations.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional information or comments about the " + "bill. Used for internal communication, " + "vendor instructions, or special handling " + "requirements. Visible to vendors and " + "included in bill communications. Useful for " + "tracking special arrangements or payment " + "instructions.", + "example": "Thanks for your business.", + "type": "string", + }, + "payment_terms": { + "description": "Numeric identifier for payment terms " + "configuration. Defines when payment " + "is due relative to bill date. 0 = " + "Due on Receipt, positive numbers = " + "days after bill date, negative " + "numbers = days before bill date. " + "Common values: 0 (Due on Receipt), " + "15 (Net 15), 30 (Net 30), 45 (Net " + "45). Affects due date calculation " + "and aging reports.", + "example": 0, + "type": "integer", + }, + "payment_terms_label": { + "description": "Label of the Payment Terms", + "example": "Due on Receipt", + "type": "string", + }, + "permit_number": { + "description": "The permit number for the bill.", + "type": "string", + "x-node_available_in": ["uae"], + "x-node_unavailable_in": [], + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Identifier for the price book " + "containing item rates and pricing " + "rules. Used to apply standardized " + "pricing across bills. If not " + "specified, default pricing from items " + "will be used. Helps maintain " + "consistent pricing across multiple " + "transactions.", + "example": 460000000038090, + "type": "string", + }, + "purchaseorder_ids": { + "description": "Array of purchase order " + "identifiers linked to this bill " + "for tracking purposes.", + "example": [460000000068231, 460000000068233], + "items": {"type": "string"}, + "type": "array", + }, + "recurring_bill_id": { + "description": "Identifier linking this bill to " + "a recurring bill template. Used " + "for bills that are automatically " + "generated on a schedule (weekly, " + "monthly, quarterly, etc.). " + "Enables automated bill " + "generation, consistent billing " + "cycles, and reduces manual data " + "entry. Can be modified to change " + "recurring schedule.", + "type": "string", + }, + "reference_number": { + "description": "External reference number from " + "vendor invoice or purchase order. " + "Used for cross-referencing with " + "vendor documents. Helps in " + "reconciliation and tracking " + "payments. Can include invoice " + "numbers, PO references, or any " + "vendor-specific identifiers.", + "example": "4321133", + "type": "string", + }, + "source_of_supply": { + "description": "State code where goods/services " + "originate. Used for GST " + "calculations in India. Defaults " + "to vendor contact location if not " + "specified. Supports 2-letter " + "state codes (e.g., AP for Andhra " + "Pradesh, TN for Tamil Nadu).", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "VAT treatment for the bill. Choose " + "whether the vendor falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "taxes": { + "items": { + "properties": { + "tax_amount": { + "description": "Amount of Tax in the Bill", + "example": 1.25, + "type": "string", + }, + "tax_id": { + "description": "Unique " + "identifier " + "for the " + "tax or " + "tax " + "group " + "applied " + "to this " + "line " + "item. " + "Can be " + "fetched " + "from the " + "Taxes " + "API. " + "Determines " + "tax rate " + "and " + "calculations " + "for the " + "line " + "item. " + "Required " + "when tax " + "calculations " + "are " + "enabled. " + "Affects " + "final " + "line " + "item " + "total " + "and tax " + "reporting.", + "example": "460000000027005", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_name": { + "description": "Name of the Tax", + "example": "VAT (12.5%)", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "terms": { + "description": "Terms and conditions that apply to the bill " + "transaction. Includes payment terms, " + "delivery conditions, warranty information, " + "or other contractual obligations. Displayed " + "on bill documents and vendor communications. " + "Important for legal compliance and vendor " + "relationship management.", + "example": "Terms and conditions apply.", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "bill. VAT treatment denotes the " + "location of the vendor, if the " + "vendor resides in UK then the VAT " + "treatment is uk. If the " + "vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "Unique identifier for the vendor who " + "supplied the goods/services. Can be " + "fetched from the Get Contacts API.", + "example": "460000000038029", + "type": "string", + }, + }, + "required": ["vendor_id", "bill_number"], + "type": "object", + }, + "UPDATECUSTOMFIELDSINBILL_REQUEST_BODY_SCHEMA": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": {"description": "Index of the custom field", "type": "integer"}, + "label": {"description": "Label of the Custom Field", "type": "string"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "UPDATEBILLINGADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": {"description": "Address involved in the Bill", "type": "string"}, + "attention": {"type": "string"}, + "city": {"description": "City in the Address", "type": "string"}, + "country": {"description": "Country Involved in the Address", "type": "string"}, + "fax": {"description": "Fax of the Vendor", "type": "string"}, + "is_update_customer": { + "description": "Flag to determine if customer " + "information should be updated " + "when creating the bill.", + "example": False, + "type": "boolean", + }, + "state": {"description": "State involved in the Address", "type": "string"}, + "zip": {"description": "ZIP Code involved in the Address", "type": "string"}, + }, + "type": "object", + }, + "APPLYVENDORCREDITSTOBILL_REQUEST_BODY_SCHEMA": { + "properties": { + "apply_vendor_credits": { + "items": { + "properties": { + "amount_applied": { + "description": "Amount applied to the bill.", + "example": 31.25, + "format": "double", + "type": "number", + }, + "vendor_credit_id": { + "description": "ID of the Vendor Credit", + "example": "4600000053221", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "bill_payments": { + "items": { + "properties": { + "amount_applied": { + "description": "Amount applied to the bill.", + "example": 31.25, + "format": "double", + "type": "number", + }, + "payment_id": { + "description": "ID of the Payment", + "example": "460000000042059", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "ADDCOMMENTTOBILL_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "Detailed description of the line item. " + "Provides additional context about the " + "product, service, or expense. Used for " + "vendor communication, internal " + "documentation, and expense " + "justification. Can include " + "specifications, requirements, or " + "special instructions.", + "type": "string", + } + }, + "required": ["description"], + "type": "object", + }, + "CREATECHARTOFACCOUNT_REQUEST_BODY_SCHEMA": { + "properties": { + "account_code": {"description": "Code Associated with the Account", "type": "string"}, + "account_name": { + "description": "Name of the account", + "example": "Notes Payable", + "type": "string", + }, + "account_type": { + "description": "Type of the account. Allowed Values: " + "other_asset, " + "other_current_asset, " + "intangible_asset, " + "right_to_use_asset,financial_asset,contingent_asset,contract_asset, " + "cash, bank, " + "fixed_asset, " + "other_current_liability, " + "contract_liability , " + "refund_liability, " + "credit_card, " + "long_term_liability, " + "loans_and_borrowing " + ",lease_liability " + ",employee_benefit_liability " + ",contingent_liability " + ",financial_liability , " + "other_liability, " + "equity, " + "income,finance_income " + ",other_comprehensive_income " + ", other_income, " + "expense, " + "manufacturing_expense " + ",impairment_expense " + ",depreciation_expense " + ",employee_benefit_expense " + ",lease_expense " + ",finance_expense " + ",tax_expense , " + "cost_of_goods_sold, " + "other_expense, " + "accounts_receivable and " + "accounts_payable.", + "example": "long_term_liability", + "type": "string", + }, + "can_show_in_ze": {"example": False, "type": "boolean"}, + "currency_id": { + "description": "ID of the account currency.", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000080163", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Description of the account", + "example": "A Liability account which can be paid off " + "in a time period longer than one year.", + "type": "string", + }, + "include_in_vat_return": { + "description": "Boolean to include an account in VAT returns.", + "type": "boolean", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "parent_account_id": { + "description": "ID of the Parent Account", + "example": "460000000009097", + "type": "string", + }, + "show_on_dashboard": {"example": False, "type": "boolean"}, + }, + "type": "object", + }, + "UPDATEACCOUNTINFO_REQUEST_BODY_SCHEMA": { + "properties": { + "account_code": {"description": "Code Associated with the Account", "type": "string"}, + "account_name": { + "description": "Name of the account", + "example": "Notes Payable", + "type": "string", + }, + "account_type": { + "description": "Type of the account. Allowed Values: " + "other_asset, " + "other_current_asset, " + "intangible_asset, " + "right_to_use_asset,financial_asset,contingent_asset,contract_asset, " + "cash, bank, " + "fixed_asset, " + "other_current_liability, " + "contract_liability , " + "refund_liability, " + "credit_card, " + "long_term_liability, " + "loans_and_borrowing " + ",lease_liability " + ",employee_benefit_liability " + ",contingent_liability " + ",financial_liability , " + "other_liability, " + "equity, " + "income,finance_income " + ",other_comprehensive_income " + ", other_income, " + "expense, " + "manufacturing_expense " + ",impairment_expense " + ",depreciation_expense " + ",employee_benefit_expense " + ",lease_expense " + ",finance_expense " + ",tax_expense , " + "cost_of_goods_sold, " + "other_expense, " + "accounts_receivable and " + "accounts_payable.", + "example": "long_term_liability", + "type": "string", + }, + "can_show_in_ze": {"example": False, "type": "boolean"}, + "currency_id": { + "description": "ID of the account currency.", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000080163", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Description of the account", + "example": "A Liability account which can be paid off " + "in a time period longer than one year.", + "type": "string", + }, + "include_in_vat_return": { + "description": "Boolean to include an account in VAT returns.", + "type": "boolean", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "parent_account_id": { + "description": "ID of the Parent Account", + "example": "460000000009097", + "type": "string", + }, + "show_on_dashboard": {"example": False, "type": "boolean"}, + }, + "type": "object", + }, + "CREATECONTACTPERSON_REQUEST_BODY_SCHEMA": { + "properties": { + "communication_preference": { + "description": "Preferred modes of communication for the contact person.", + "properties": { + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + } + }, + "type": "object", + }, + "contact_id": { + "description": "Contact id of the contact", + "example": 460000000026049, + "type": "string", + }, + "department": { + "description": "department on which a person belongs. Max-length [50]", + "example": "Sales", + "type": "string", + }, + "designation": { + "description": "designation of a person. Max-length [50]", + "example": "Sales Engineer", + "type": "string", + }, + "email": { + "description": "Email address of the contact person. Max-length [100]", + "example": "willsmith@bowmanfurniture.com", + "type": "string", + }, + "enable_portal": { + "description": "option to enable the portal access. " + "allowed values " + "true,false", + "example": True, + "type": "boolean", + }, + "first_name": { + "description": "First name of the contact person. Max-length [100]", + "example": "Will", + "type": "string", + }, + "last_name": { + "description": "Last name of the contact person. Max-length [100]", + "example": "Smith", + "type": "string", + }, + "mobile": { + "description": "Max-length [50]", + "example": "+1-4054439562", + "type": "string", + }, + "phone": { + "description": "Max-length [50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "salutation": { + "description": "Salutation for the contact. Max-length [25]", + "example": "Mr", + "type": "string", + }, + "skype": { + "description": "skype address. Max-length [50]", + "example": "zoho", + "type": "string", + }, + }, + "required": ["first_name"], + "type": "object", + }, + "UPDATECONTACTPERSON_REQUEST_BODY_SCHEMA": { + "properties": { + "communication_preference": { + "description": "Preferred modes of communication for the contact person.", + "properties": { + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + } + }, + "type": "object", + }, + "contact_id": { + "description": "Contact id of the contact", + "example": 460000000026049, + "type": "string", + }, + "department": { + "description": "department on which a person belongs. Max-length [50]", + "example": "Sales", + "type": "string", + }, + "designation": { + "description": "designation of a person. Max-length [50]", + "example": "Sales Engineer", + "type": "string", + }, + "email": { + "description": "Email address of the contact person. Max-length [100]", + "example": "willsmith@bowmanfurniture.com", + "type": "string", + }, + "enable_portal": { + "description": "option to enable the portal access. " + "allowed values " + "true,false", + "example": True, + "type": "boolean", + }, + "first_name": { + "description": "First name of the contact person. Max-length [100]", + "example": "Will", + "type": "string", + }, + "is_primary_contact": { + "description": "To mark contact person as primary for contact", + "example": True, + "type": "boolean", + }, + "last_name": { + "description": "Last name of the contact person. Max-length [100]", + "example": "Smith", + "type": "string", + }, + "mobile": { + "description": "Max-length [50]", + "example": "+1-4054439562", + "type": "string", + }, + "phone": { + "description": "Max-length [50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "salutation": { + "description": "Salutation for the contact. Max-length [25]", + "example": "Mr", + "type": "string", + }, + "skype": { + "description": "skype address. Max-length [50]", + "example": "zoho", + "type": "string", + }, + }, + "required": ["contact_id", "first_name"], + "type": "object", + }, + "CREATEBUSINESSCONTACT_REQUEST_BODY_SCHEMA": { + "properties": { + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "billing_address": { + "description": "Billing address information for the contact.", + "properties": { + "address": { + "description": "Street 1 address for the contact. Max-length [500].", + "example": "4900 Hopyard Rd", + "type": "string", + }, + "attention": { + "description": "Attention " + "for " + "proper " + "delivery " + "and " + "routing " + "of " + "business " + "correspondence. " + "Max-length " + "[100].", + "example": "Mr.John", + "type": "string", + }, + "city": { + "description": "City name for the address. Max-length [100].", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country name for the address. Max-length [100].", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Fax number for the address. Max-length [50].", + "example": "+1-925-924-9600", + "type": "string", + }, + "phone": { + "description": "The " + "contact " + "phone " + "number " + "associated " + "with the " + "address. " + "Max-length " + "[50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "state": { + "description": "State for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "state_code": { + "description": "State or province code for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "street2": { + "description": "Street 2 address for the contact. Max-length [255].", + "example": "Suite 310", + "type": "string", + }, + "zip": { + "description": "Postal or ZIP code for the address. Max-length [50].", + "example": 94588, + "type": "string", + }, + }, + "type": "object", + }, + "company_name": { + "description": "Legal or registered contact's company " + "name. Used for legal documents and " + "formal communications. Max-length " + "[200].", + "example": "Bowman and Co", + "type": "string", + }, + "contact_name": { + "description": "Display name for the contact. It is " + "used for searching and displaying " + "contacts.", + "example": "Bowman and Co", + "type": "string", + }, + "contact_number": { + "description": "Contact number associated with the " + "contact for internal tracking and " + "identification purposes. Max-length " + "[200].", + "example": "CNT-001234", + "type": "string", + }, + "contact_persons": { + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person.", + "properties": { + "is_sms_enabled": { + "description": "Whether " + "SMS " + "text " + "messages " + "are " + "allowed " + "for " + "the " + "contact " + "person.", + "example": False, + "type": "boolean", + "x-node_available_in": ["SMS integration"], + }, + "is_whatsapp_enabled": { + "description": "Whether " + "WhatsApp " + "messaging " + "is " + "allowed " + "for " + "the " + "contact " + "person.", + "example": False, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "department": { + "description": "Department " + "of " + "the " + "contact " + "person " + "within " + "the " + "contact's " + "company. " + "Max-length " + "[50].", + "example": "Sales and Marketing", + "type": "string", + }, + "designation": { + "description": "Designation " + "of " + "the " + "contact " + "person " + "within " + "the " + "contact's " + "company. " + "Max-length " + "[100].", + "example": "Sales Executive", + "type": "string", + }, + "email": { + "description": "Email " + "address " + "of " + "the " + "contact " + "person " + "for " + "business " + "communications. " + "Max-length " + "[100].", + "example": "willsmith@bowmanfurniture.com", + "type": "string", + }, + "enable_portal": { + "description": "Indicates " + "whether " + "the " + "contact " + "person " + "should " + "have " + "access " + "to " + "the " + "client " + "portal. " + "Allowed " + "values: " + "true " + "and " + "false.", + "example": True, + "type": "boolean", + }, + "first_name": { + "description": "First name of the contact person. Max-length [100].", + "example": "Will", + "type": "string", + }, + "is_primary_contact": { + "description": "Indicates " + "whether " + "this " + "contact " + "person " + "is " + "the " + "primary " + "contact. " + "Only " + "one " + "per " + "contact. " + "Allowed " + "values: " + "true " + "and " + "false.", + "example": True, + "type": "boolean", + }, + "last_name": { + "description": "Last name of the contact person. Max-length [100].", + "example": "Smith", + "type": "string", + }, + "mobile": { + "description": "Mobile number of the contact person. Max-length [50].", + "example": "+1-4054439562", + "type": "string", + }, + "phone": { + "description": "Phone number of the contact person. Max-length [50].", + "example": "+1-925-921-9201", + "type": "string", + }, + "salutation": { + "description": "Salutation for the contact. Max-length [25]", + "example": "Mr", + "type": "string", + }, + "skype": { + "description": "Skype username of the contact person. Max-length [50].", + "example": "Zoho", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "contact_type": { + "description": "Determines how the contact is treated " + "in the system. Allowed values: " + "customer, " + "vendor.", + "example": "customer", + "type": "string", + }, + "country_code": { + "description": "For UK Edition: Two letter " + "country code of a contact
For " + "Avalara: Two letter country code " + "for the customer country, if your " + "customer is not in US. Refer [AvaTax " + "Codes for Countries and " + "States][2].
For GCC Editions " + ": Two Letter country code for the " + "GCC Country or the UAE emirate of the " + "contact which will be considered as " + "place of supply.
Supported " + "codes for UAE emirates are :
Abu " + "Dhabi - AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain - " + "UM.
Supported codes " + "for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia - " + "SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "type": "string", + "x-node_available_in": ["uk", "gcc", "Avalara Integration"], + "x-node_unavailable_in": [], + }, + "credit_limit": { + "description": "For Customer Only : The " + "maximum credit amount that can be " + "allowed for the customer. Once the " + "customer's outstanding receivables " + "reach this limit, the system will " + "restrict the customer from creating " + "any further transactions.", + "example": 1000, + "format": "double", + "type": "number", + }, + "currency_id": { + "description": "Unique identifier for the currency " + "assigned to this contact. The " + "currency_id must correspond to a valid " + "currency configuration in the system.", + "example": 460000000000097, + "type": "string", + }, + "custom_fields": { + "description": "Custom fields of the contact.", + "items": { + "properties": { + "index": { + "description": "Index " + "of " + "the " + "custom " + "field. " + "It " + "can " + "hold " + "any " + "value " + "from " + "1 " + "to " + "10.", + "example": 1, + "type": "integer", + }, + "value": { + "description": "Value of the custom field.", + "example": "GBGD078", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_sub_type": { + "description": "For Customer Only : " + "Additional classification for " + "customers. Allowed values: " + "individual, " + "business.", + "example": "business", + "type": "string", + }, + "default_templates": { + "properties": { + "bill_template_id": { + "description": "Default " + "bill " + "template " + "id " + "used " + "for " + "this " + "vendor " + "while " + "creating " + "bill.", + "example": 460000000000103, + "type": "string", + }, + "creditnote_email_template_id": { + "description": "Default " + "credit " + "note " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "credit " + "notes.", + "example": 460000000052075, + "type": "string", + }, + "creditnote_template_id": { + "description": "Default " + "credit " + "note " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "credit " + "note.", + "example": 460000000000211, + "type": "string", + }, + "estimate_email_template_id": { + "description": "Default " + "estimate " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "estimates.", + "example": 460000000052073, + "type": "string", + }, + "estimate_template_id": { + "description": "Default " + "estimate " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "estimate.", + "example": 460000000000179, + "type": "string", + }, + "invoice_email_template_id": { + "description": "Default " + "invoice " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "invoices.", + "example": 460000000052071, + "type": "string", + }, + "invoice_template_id": { + "description": "Default " + "invoice " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "invoice.", + "example": 460000000052069, + "type": "string", + }, + "payment_remittance_email_template_id": { + "description": "Default " + "payment " + "remittance " + "email " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "payment " + "remittances.", + "example": 460000000000102, + "type": "string", + }, + "paymentthankyou_email_template_id": { + "description": "Default " + "payment " + "thank " + "you " + "email " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "payment " + "acknowledgment.", + "example": 460000000000221, + "type": "string", + }, + "paymentthankyou_template_id": { + "description": "Default " + "payment " + "thank " + "you " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "payment " + "acknowledgment.", + "example": 460000000000216, + "type": "string", + }, + "purchaseorder_email_template_id": { + "description": "Default " + "purchase " + "order " + "email " + "template " + "id " + "used " + "for " + "this " + "vendor " + "while " + "sending " + "purchase " + "order.", + "example": 460000000000218, + "type": "string", + }, + "purchaseorder_template_id": { + "description": "Default " + "purchase " + "order " + "template " + "id " + "used " + "for " + "this " + "vendor " + "while " + "creating " + "purchase " + "order.", + "example": 460000000000213, + "type": "string", + }, + "retainerinvoice_email_template_id": { + "description": "Default " + "retainer " + "invoice " + "email " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "retainer " + "invoice.", + "example": 460000000000220, + "type": "string", + }, + "retainerinvoice_paymentthankyou_email_template_id": { + "description": "Default " + "retainer " + "invoice " + "payment " + "thank " + "you " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "payment " + "acknowledgment " + "for " + "retainer " + "invoices.", + "example": 460000000000222, + "type": "string", + }, + "retainerinvoice_paymentthankyou_template_id": { + "description": "Default " + "retainer " + "invoice " + "payment " + "thank " + "you " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "payment " + "acknowledgment " + "for " + "retainer " + "invoices.", + "example": 460000000000217, + "type": "string", + }, + "retainerinvoice_template_id": { + "description": "Default " + "retainer " + "invoice " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "retainer " + "invoice.", + "example": 460000000000215, + "type": "string", + }, + "salesorder_email_template_id": { + "description": "Default " + "sales " + "order " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "sales " + "order.", + "example": 460000000000219, + "type": "string", + }, + "salesorder_template_id": { + "description": "Default " + "sales " + "order " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "sales " + "order.", + "example": 460000000000214, + "type": "string", + }, + "statement_template_id": { + "description": "Default " + "statement " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "creating " + "statement.", + "example": 460000000000101, + "type": "string", + }, + }, + "type": "object", + }, + "facebook": { + "description": "Facebook profile URL for the contact. Max-length [100].", + "example": "zoho", + "type": "string", + }, + "gst_no": { + "description": "15-digit GST identification number of the " + "contact as issued by the Indian tax " + "authorities.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "ignore_auto_number_generation": { + "description": "Indicates whether " + "the auto generation " + "contact_number is " + "ignored or not for " + "the contact. Allowed " + "values: " + "true, " + "false.", + "example": False, + "type": "boolean", + }, + "is_portal_enabled": { + "description": "Indicates whether portal access " + "is enabled for the primary " + "contact person. Allowed value: " + "true and " + "false.", + "example": True, + "type": "boolean", + }, + "is_taxable": { + "description": "Indicates whether the customer is " + "subject to tax collection. Tax-related " + "fields are only available when this " + "field is set to true. Allowed values: " + "true and " + "false.", + "example": True, + "type": "boolean", + "x-node_available_in": ["us", "ca", "au", "in", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "is_tds_registered": { + "description": "Indicates whether the contact is " + "registered for Tax Deducted at " + "Source (TDS) in Mexico.", + "type": "boolean", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "language_code": { + "description": "Preferred language for the contact. " + "Determines portal language. Allowed " + "values: " + "de,en,es,fr,it,ja,nl,pt,pt_br,sv,zh,en_gb", + "type": "string", + }, + "legal_name": { + "description": "Official legal name of the contact as " + "registered with tax authorities in " + "Mexico.", + "example": "ESCUELA KEMPER URGATE", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "notes": { + "description": "Additional comments or notes about the contact.", + "example": "Payment option : Through check", + "type": "string", + }, + "opening_balances": { + "items": { + "properties": { + "exchange_rate": { + "description": "Currency " + "exchange " + "rate " + "used " + "to " + "convert " + "opening " + "balance " + "to " + "organization's " + "base " + "currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "associated " + "with " + "this " + "opening " + "balance.", + "example": "460000000038080", + "type": "string", + }, + "opening_balance_amount": { + "description": "Initial " + "balance " + "amount " + "for " + "the " + "contact " + "at " + "the " + "time " + "of " + "creation.", + "example": 1200, + "format": "double", + "type": "number", + }, + }, + "type": "object", + }, + "type": "array", + }, + "owner_id": { + "description": "For Customer Only : Unique " + "identifier for the user assigned as the " + "owner of the contact. This field " + "specifies which user in the organization " + "is responsible for managing the business " + "relationship with this contact.", + "example": 460000000016051, + "type": "string", + }, + "payment_terms": { + "description": "Number of days allowed for payment after the invoice date.", + "example": 15, + "type": "integer", + }, + "payment_terms_label": { + "description": "Human-readable label of " + "payment terms displayed on " + "invoices and other " + "transactions. Max-length " + "[200].", + "example": "Net 15", + "type": "string", + }, + "place_of_contact": { + "description": "State or union territory code " + "where the contact is located for " + "Indian tax purposes. (This node " + "identifies the place of supply " + "and source of supply when " + "invoices/bills are raised for the " + "customer/vendor respectively. " + "This is not applicable for " + "Overseas contacts)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Pricebook id which is associated with " + "the contact. Max-length [200].", + "example": 460000000000123, + "type": "string", + }, + "shipping_address": { + "description": "Shipping address information for the contact.", + "properties": { + "address": { + "description": "Street 1 address for the contact. Max-length [500].", + "example": "4900 Hopyard Rd", + "type": "string", + }, + "attention": { + "description": "Attention " + "for " + "proper " + "delivery " + "and " + "routing " + "of " + "business " + "correspondence. " + "Max-length " + "[100].", + "example": "Mr.John", + "type": "string", + }, + "city": { + "description": "City name for the address. Max-length [100].", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country name for the address. Max-length [100].", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Fax number for the address. Max-length [50].", + "example": "+1-925-924-9600", + "type": "string", + }, + "phone": { + "description": "The " + "contact " + "phone " + "number " + "associated " + "with the " + "address. " + "Max-length " + "[50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "state": { + "description": "State for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "state_code": { + "description": "State or province code for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "street2": { + "description": "Street 2 address for the contact. Max-length [255].", + "example": "Suite 310", + "type": "string", + }, + "zip": { + "description": "Postal or ZIP code for the address. Max-length [50].", + "example": 94588, + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Filter all your reports based on the tag", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 462000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 462000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_authority_id": { + "description": "Unique identifier for the tax " + "authority responsible for the " + "customer's tax jurisdiction. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": 11149000000061052, + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Display name of the tax " + "authority responsible for the " + "customer's tax jurisdiction.", + "type": "string", + }, + "tax_exemption_certificate_number": { + "description": "Tax Exemption " + "Certificate " + "number is issued " + "by the Kenya " + "Revenue Authority " + "(KRA) to " + "organizations or " + "individuals who " + "qualify for tax " + "exemption", + "example": "KRAEXM0043310521", + "type": "string", + "x-node_available_in": ["ke"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Code identifier for the tax exemption assigned to the contact.", + "type": "string", + "x-node_available_in": ["us", "ca", "au", "in"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique identifier for the tax " + "exemption configuration assigned " + "to this contact.", + "example": 11149000000061054, + "type": "string", + "x-node_available_in": ["us", "ca", "au", "in"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier for the tax or tax group " + "assigned to the contact. Available only " + "when is_taxable is " + "true.", + "example": 11149000000061058, + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id_type": { + "description": "Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN.", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_id_value": { + "description": "Tax ID of the contact.", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_reg_no": { + "description": "For GCC Edition: 15 digit Tax " + "Registration number of a contact with " + "Tax treatment as " + "vat_registered,gcc_vat_registered,dz_vat_registered.
For " + "Mexico Edition: 12 digit Tax " + "Registration number of a contact with " + "Tax treatment as
" + "home_country_mexico, " + "border_region_mexico, " + "non_mexico.
Consumers " + "generic RFC: " + "XAXX010101000, Overseas " + "generic RFC: " + "XEXX010101000.
For " + "Kenya Edition: 11 digit Tax " + "Registration number of a contact with " + "Tax treatment as " + "vat_registered
For " + "SouthAfrica Edition: 10 digit Tax " + "Registration number of a contact with " + "Tax treatment as " + "vat_registered", + "example": 12345678912345, + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "tax_regime": { + "description": "Tax Regime of the contact.Allowed " + "Values: " + "general_legal_person, " + "legal_entities_non_profit, " + "resident_abroad, " + "production_cooperative_societies, " + "agricultural_livestock, " + "optional_group_of_companies, " + "coordinated, " + "simplified_trust, " + "wages_salaries_income, " + "lease, " + "property_disposal_acquisition, " + "other_income, " + "resident_abroad, " + "divident_income, " + "individual_business_professional, " + "interest_income, " + "income_obtaining_price, " + "no_tax_obligation, " + "tax_incorporation, " + "income_through_technology_platform, " + "simplified_trust.", + "example": "general_legal_person", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "Tax treatment of the " + "contact.
Allowed Values: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered " + "and " + "dz_vat_not_registered
home_country_mexico " + "(A business that is located within " + "MX)
border_region_mexico " + "(A business that is located in the " + "northern and southern border regions " + "in MX)
non_mexico " + "(A business that is located outside " + "MX).
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "Unique identifier for the Tax Deducted " + "at Source (TDS) tax configuration " + "assigned to the contact.", + "example": "982000000557012", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "track_1099": { + "description": "Boolean to track a contact for 1099 reporting.", + "type": "boolean", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "twitter": { + "description": "X profile URL for the contact. Max-length [100].", + "example": "zoho", + "type": "string", + }, + "vat_reg_no": { + "description": "For UK Edition: VAT Registration " + "number of a contact with length should " + "be between 2 and 12 characters.
" + "For Avalara: If you are doing " + "sales in the European Union (EU) then " + "provide VAT Registration Number of your " + "customers here. This is used to " + "calculate VAT for B2B sales, from " + "Avalara.", + "type": "string", + "x-node_available_in": ["uk", "Avalara Integration"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment of the contact.Allowed " + "Values:
uk (A " + "business that is located in the " + "UK.),
eu_vat_registered " + "(A business that is reg for VAT and " + "trade goods between Northern Ireland " + "and EU. This node is available only " + "for organizations enabled for NI " + "protocal in VAT Settings.) " + "and
overseas (A " + "business that is located outside UK. " + "Pre Brexit, this was split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu ).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "website": { + "description": "Official website URL of the contact.", + "example": "www.bowmanfurniture.com", + "type": "string", + }, + }, + "required": ["contact_name"], + "type": "object", + }, + "UPDATECONTACTBYCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "billing_address": { + "description": "Billing address information for the contact.", + "properties": { + "address": { + "description": "Street 1 address for the contact. Max-length [500].", + "example": "4900 Hopyard Rd", + "type": "string", + }, + "attention": { + "description": "Attention " + "for " + "proper " + "delivery " + "and " + "routing " + "of " + "business " + "correspondence. " + "Max-length " + "[100].", + "example": "Mr.John", + "type": "string", + }, + "city": { + "description": "City name for the address. Max-length [100].", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country name for the address. Max-length [100].", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Fax number for the address. Max-length [50].", + "example": "+1-925-924-9600", + "type": "string", + }, + "phone": { + "description": "The " + "contact " + "phone " + "number " + "associated " + "with the " + "address. " + "Max-length " + "[50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "state": { + "description": "State for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "state_code": { + "description": "State or province code for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "street2": { + "description": "Street 2 address for the contact. Max-length [255].", + "example": "Suite 310", + "type": "string", + }, + "zip": { + "description": "Postal or ZIP code for the address. Max-length [50].", + "example": 94588, + "type": "string", + }, + }, + "type": "object", + }, + "company_name": { + "description": "Legal or registered contact's company " + "name. Used for legal documents and " + "formal communications. Max-length " + "[200].", + "example": "Bowman and Co", + "type": "string", + }, + "contact_name": { + "description": "Display name for the contact. It is " + "used for searching and displaying " + "contacts.", + "example": "Bowman and Co", + "type": "string", + }, + "contact_number": { + "description": "Contact number associated with the " + "contact for internal tracking and " + "identification purposes. Max-length " + "[200].", + "example": "CNT-001234", + "type": "string", + }, + "contact_persons": { + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person.", + "properties": { + "is_sms_enabled": { + "description": "Whether " + "SMS " + "text " + "messages " + "are " + "allowed " + "for " + "the " + "contact " + "person.", + "example": False, + "type": "boolean", + "x-node_available_in": ["SMS integration"], + }, + "is_whatsapp_enabled": { + "description": "Whether " + "WhatsApp " + "messaging " + "is " + "allowed " + "for " + "the " + "contact " + "person.", + "example": False, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "ID " + "of " + "the " + "contact " + "person. " + "For " + "an " + "existing " + "contact " + "person, " + "pass " + "the " + "contact_person_id.", + "example": 460000000026051, + "type": "string", + }, + "department": { + "description": "Department " + "of " + "the " + "contact " + "person " + "within " + "the " + "contact's " + "company. " + "Max-length " + "[50].", + "example": "Sales and Marketing", + "type": "string", + }, + "designation": { + "description": "Designation " + "of " + "the " + "contact " + "person " + "within " + "the " + "contact's " + "company. " + "Max-length " + "[100].", + "example": "Sales Executive", + "type": "string", + }, + "email": { + "description": "Email " + "address " + "of " + "the " + "contact " + "person " + "for " + "business " + "communications. " + "Max-length " + "[100].", + "example": "willsmith@bowmanfurniture.com", + "type": "string", + }, + "enable_portal": { + "description": "Indicates " + "whether " + "the " + "contact " + "person " + "should " + "have " + "access " + "to " + "the " + "client " + "portal. " + "Allowed " + "values: " + "true " + "and " + "false.", + "example": True, + "type": "boolean", + }, + "first_name": { + "description": "First name of the contact person. Max-length [100].", + "example": "Will", + "type": "string", + }, + "is_primary_contact": { + "description": "Indicates " + "whether " + "this " + "contact " + "person " + "is " + "the " + "primary " + "contact. " + "Only " + "one " + "per " + "contact. " + "Allowed " + "values: " + "true " + "and " + "false.", + "example": True, + "type": "boolean", + }, + "last_name": { + "description": "Last name of the contact person. Max-length [100].", + "example": "Smith", + "type": "string", + }, + "mobile": { + "description": "Mobile number of the contact person. Max-length [50].", + "example": "+1-4054439562", + "type": "string", + }, + "phone": { + "description": "Phone number of the contact person. Max-length [50].", + "example": "+1-925-921-9201", + "type": "string", + }, + "salutation": { + "description": "Salutation for the contact. Max-length [25]", + "example": "Mr", + "type": "string", + }, + "skype": { + "description": "Skype username of the contact person. Max-length [50].", + "example": "Zoho", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "contact_type": { + "description": "Determines how the contact is treated " + "in the system. Allowed values: " + "customer, " + "vendor.", + "example": "customer", + "type": "string", + }, + "country_code": { + "description": "For UK Edition: Two letter " + "country code of a contact
For " + "Avalara: Two letter country code " + "for the customer country, if your " + "customer is not in US. Refer [AvaTax " + "Codes for Countries and " + "States][2].
For GCC Editions " + ": Two Letter country code for the " + "GCC Country or the UAE emirate of the " + "contact which will be considered as " + "place of supply.
Supported " + "codes for UAE emirates are :
Abu " + "Dhabi - AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain - " + "UM.
Supported codes " + "for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia - " + "SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "type": "string", + "x-node_available_in": ["uk", "gcc", "Avalara Integration"], + "x-node_unavailable_in": [], + }, + "credit_limit": { + "description": "For Customer Only : The " + "maximum credit amount that can be " + "allowed for the customer. Once the " + "customer's outstanding receivables " + "reach this limit, the system will " + "restrict the customer from creating " + "any further transactions.", + "example": 1000, + "format": "double", + "type": "number", + }, + "currency_id": { + "description": "Unique identifier for the currency " + "assigned to this contact. The " + "currency_id must correspond to a valid " + "currency configuration in the system.", + "example": 460000000000097, + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "index": { + "description": "Index " + "of " + "the " + "custom " + "field. " + "It " + "can " + "hold " + "any " + "value " + "from " + "1 " + "to " + "10.", + "example": 1, + "type": "integer", + }, + "label": { + "description": "Label of the custom field.", + "example": "VAT ID", + "type": "string", + }, + "value": { + "description": "Value of the custom field.", + "example": "GBGD078", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_sub_type": { + "description": "For Customer Only : " + "Additional classification for " + "customers. Allowed values: " + "individual, " + "business.", + "example": "business", + "type": "string", + }, + "default_templates": { + "properties": { + "bill_template_id": { + "description": "Default " + "bill " + "template " + "id " + "used " + "for " + "this " + "vendor " + "while " + "creating " + "bill.", + "example": 460000000000103, + "type": "string", + }, + "creditnote_email_template_id": { + "description": "Default " + "credit " + "note " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "credit " + "notes.", + "example": 460000000052075, + "type": "string", + }, + "creditnote_template_id": { + "description": "Default " + "credit " + "note " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "credit " + "note.", + "example": 460000000000211, + "type": "string", + }, + "estimate_email_template_id": { + "description": "Default " + "estimate " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "estimates.", + "example": 460000000052073, + "type": "string", + }, + "estimate_template_id": { + "description": "Default " + "estimate " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "estimate.", + "example": 460000000000179, + "type": "string", + }, + "invoice_email_template_id": { + "description": "Default " + "invoice " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "invoices.", + "example": 460000000052071, + "type": "string", + }, + "invoice_template_id": { + "description": "Default " + "invoice " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "invoice.", + "example": 460000000052069, + "type": "string", + }, + "payment_remittance_email_template_id": { + "description": "Default " + "payment " + "remittance " + "email " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "payment " + "remittances.", + "example": 460000000000102, + "type": "string", + }, + "paymentthankyou_email_template_id": { + "description": "Default " + "payment " + "thank " + "you " + "email " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "payment " + "acknowledgment.", + "example": 460000000000221, + "type": "string", + }, + "paymentthankyou_template_id": { + "description": "Default " + "payment " + "thank " + "you " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "payment " + "acknowledgment.", + "example": 460000000000216, + "type": "string", + }, + "purchaseorder_email_template_id": { + "description": "Default " + "purchase " + "order " + "email " + "template " + "id " + "used " + "for " + "this " + "vendor " + "while " + "sending " + "purchase " + "order.", + "example": 460000000000218, + "type": "string", + }, + "purchaseorder_template_id": { + "description": "Default " + "purchase " + "order " + "template " + "id " + "used " + "for " + "this " + "vendor " + "while " + "creating " + "purchase " + "order.", + "example": 460000000000213, + "type": "string", + }, + "retainerinvoice_email_template_id": { + "description": "Default " + "retainer " + "invoice " + "email " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "retainer " + "invoice.", + "example": 460000000000220, + "type": "string", + }, + "retainerinvoice_paymentthankyou_email_template_id": { + "description": "Default " + "retainer " + "invoice " + "payment " + "thank " + "you " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "payment " + "acknowledgment " + "for " + "retainer " + "invoices.", + "example": 460000000000222, + "type": "string", + }, + "retainerinvoice_paymentthankyou_template_id": { + "description": "Default " + "retainer " + "invoice " + "payment " + "thank " + "you " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "payment " + "acknowledgment " + "for " + "retainer " + "invoices.", + "example": 460000000000217, + "type": "string", + }, + "retainerinvoice_template_id": { + "description": "Default " + "retainer " + "invoice " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "retainer " + "invoice.", + "example": 460000000000215, + "type": "string", + }, + "salesorder_email_template_id": { + "description": "Default " + "sales " + "order " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "sales " + "order.", + "example": 460000000000219, + "type": "string", + }, + "salesorder_template_id": { + "description": "Default " + "sales " + "order " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "sales " + "order.", + "example": 460000000000214, + "type": "string", + }, + "statement_template_id": { + "description": "Default " + "statement " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "creating " + "statement.", + "example": 460000000000101, + "type": "string", + }, + }, + "type": "object", + }, + "facebook": { + "description": "Facebook profile URL for the contact. Max-length [100].", + "example": "zoho", + "type": "string", + }, + "gst_no": { + "description": "15-digit GST identification number of the " + "contact as issued by the Indian tax " + "authorities.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "ignore_auto_number_generation": { + "description": "Indicates whether " + "the auto generation " + "contact_number is " + "ignored or not for " + "the contact. Allowed " + "values: " + "true, " + "false.", + "example": False, + "type": "boolean", + }, + "is_taxable": { + "description": "Indicates whether the customer is " + "subject to tax collection. Tax-related " + "fields are only available when this " + "field is set to true. Allowed values: " + "true and " + "false.", + "example": True, + "type": "boolean", + "x-node_available_in": ["us", "ca", "au", "in", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "is_tds_registered": { + "description": "Indicates whether the contact is " + "registered for Tax Deducted at " + "Source (TDS) in Mexico.", + "type": "boolean", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "legal_name": { + "description": "Official legal name of the contact as " + "registered with tax authorities in " + "Mexico.", + "example": "ESCUELA KEMPER URGATE", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "notes": { + "description": "Additional comments or notes about the contact.", + "example": "Payment option : Through check", + "type": "string", + }, + "opening_balances": { + "items": { + "properties": { + "exchange_rate": { + "description": "Currency " + "exchange " + "rate " + "used " + "to " + "convert " + "opening " + "balance " + "to " + "organization's " + "base " + "currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "associated " + "with " + "this " + "opening " + "balance.", + "example": "460000000038080", + "type": "string", + }, + "opening_balance_amount": { + "description": "Initial " + "balance " + "amount " + "for " + "the " + "contact " + "at " + "the " + "time " + "of " + "creation.", + "example": 1200, + "format": "double", + "type": "number", + }, + }, + "type": "object", + }, + "type": "array", + }, + "owner_id": { + "description": "For Customer Only : Unique " + "identifier for the user assigned as the " + "owner of the contact. This field " + "specifies which user in the organization " + "is responsible for managing the business " + "relationship with this contact.", + "example": 460000000016051, + "type": "string", + }, + "payment_terms": { + "description": "Number of days allowed for payment after the invoice date.", + "example": 15, + "type": "integer", + }, + "payment_terms_label": { + "description": "Human-readable label of " + "payment terms displayed on " + "invoices and other " + "transactions. Max-length " + "[200].", + "example": "Net 15", + "type": "string", + }, + "place_of_contact": { + "description": "State or union territory code " + "where the contact is located for " + "Indian tax purposes. (This node " + "identifies the place of supply " + "and source of supply when " + "invoices/bills are raised for the " + "customer/vendor respectively. " + "This is not applicable for " + "Overseas contacts)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Pricebook id which is associated with " + "the contact. Max-length [200].", + "example": 460000000000123, + "type": "string", + }, + "shipping_address": { + "description": "Shipping address information for the contact.", + "properties": { + "address": { + "description": "Street 1 address for the contact. Max-length [500].", + "example": "4900 Hopyard Rd", + "type": "string", + }, + "attention": { + "description": "Attention " + "for " + "proper " + "delivery " + "and " + "routing " + "of " + "business " + "correspondence. " + "Max-length " + "[100].", + "example": "Mr.John", + "type": "string", + }, + "city": { + "description": "City name for the address. Max-length [100].", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country name for the address. Max-length [100].", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Fax number for the address. Max-length [50].", + "example": "+1-925-924-9600", + "type": "string", + }, + "phone": { + "description": "The " + "contact " + "phone " + "number " + "associated " + "with the " + "address. " + "Max-length " + "[50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "state": { + "description": "State for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "state_code": { + "description": "State or province code for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "street2": { + "description": "Street 2 address for the contact. Max-length [255].", + "example": "Suite 310", + "type": "string", + }, + "zip": { + "description": "Postal or ZIP code for the address. Max-length [50].", + "example": 94588, + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Filter all your reports based on the tag", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 462000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 462000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_authority_id": { + "description": "Unique identifier for the tax " + "authority responsible for the " + "customer's tax jurisdiction. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": 11149000000061052, + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Display name of the tax " + "authority responsible for the " + "customer's tax jurisdiction.", + "type": "string", + }, + "tax_exemption_certificate_number": { + "description": "Tax Exemption " + "Certificate " + "number is issued " + "by the Kenya " + "Revenue Authority " + "(KRA) to " + "organizations or " + "individuals who " + "qualify for tax " + "exemption", + "example": "KRAEXM0043310521", + "type": "string", + "x-node_available_in": ["ke"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Code identifier for the tax exemption assigned to the contact.", + "type": "string", + "x-node_available_in": ["us", "ca", "au", "in"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique identifier for the tax " + "exemption configuration assigned " + "to this contact.", + "example": 11149000000061054, + "type": "string", + "x-node_available_in": ["us", "ca", "au", "in"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier for the tax or tax group " + "assigned to the contact. Available only " + "when is_taxable is " + "true.", + "example": 11149000000061058, + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id_type": { + "description": "Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN.", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_id_value": { + "description": "Tax ID of the contact.", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_reg_no": { + "description": "For GCC Edition: 15 digit Tax " + "Registration number of a contact with " + "Tax treatment as " + "vat_registered,gcc_vat_registered,dz_vat_registered.
For " + "Mexico Edition: 12 digit Tax " + "Registration number of a contact with " + "Tax treatment as
" + "home_country_mexico, " + "border_region_mexico, " + "non_mexico.
Consumers " + "generic RFC: " + "XAXX010101000, Overseas " + "generic RFC: " + "XEXX010101000.
For " + "Kenya Edition: 11 digit Tax " + "Registration number of a contact with " + "Tax treatment as " + "vat_registered
For " + "SouthAfrica Edition: 10 digit Tax " + "Registration number of a contact with " + "Tax treatment as " + "vat_registered", + "example": 12345678912345, + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "tax_regime": { + "description": "Tax Regime of the contact.Allowed " + "Values: " + "general_legal_person, " + "legal_entities_non_profit, " + "resident_abroad, " + "production_cooperative_societies, " + "agricultural_livestock, " + "optional_group_of_companies, " + "coordinated, " + "simplified_trust, " + "wages_salaries_income, " + "lease, " + "property_disposal_acquisition, " + "other_income, " + "resident_abroad, " + "divident_income, " + "individual_business_professional, " + "interest_income, " + "income_obtaining_price, " + "no_tax_obligation, " + "tax_incorporation, " + "income_through_technology_platform, " + "simplified_trust.", + "example": "general_legal_person", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "Tax treatment of the " + "contact.
Allowed Values: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered " + "and " + "dz_vat_not_registered
home_country_mexico " + "(A business that is located within " + "MX)
border_region_mexico " + "(A business that is located in the " + "northern and southern border regions " + "in MX)
non_mexico " + "(A business that is located outside " + "MX).
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "track_1099": { + "description": "Boolean to track a contact for 1099 reporting.", + "type": "boolean", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "twitter": { + "description": "X profile URL for the contact. Max-length [100].", + "example": "zoho", + "type": "string", + }, + "vat_reg_no": { + "description": "For UK Edition: VAT Registration " + "number of a contact with length should " + "be between 2 and 12 characters.
" + "For Avalara: If you are doing " + "sales in the European Union (EU) then " + "provide VAT Registration Number of your " + "customers here. This is used to " + "calculate VAT for B2B sales, from " + "Avalara.", + "type": "string", + "x-node_available_in": ["uk", "Avalara Integration"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment of the contact.Allowed " + "Values:
uk (A " + "business that is located in the " + "UK.),
eu_vat_registered " + "(A business that is reg for VAT and " + "trade goods between Northern Ireland " + "and EU. This node is available only " + "for organizations enabled for NI " + "protocal in VAT Settings.) " + "and
overseas (A " + "business that is located outside UK. " + "Pre Brexit, this was split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu ).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "website": { + "description": "Official website URL of the contact.", + "example": "www.bowmanfurniture.com", + "type": "string", + }, + }, + "required": ["contact_name"], + "type": "object", + }, + "UPDATEBUSINESSCONTACT_REQUEST_BODY_SCHEMA": { + "properties": { + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "billing_address": { + "description": "Billing address information for the contact.", + "properties": { + "address": { + "description": "Street 1 address for the contact. Max-length [500].", + "example": "4900 Hopyard Rd", + "type": "string", + }, + "attention": { + "description": "Attention " + "for " + "proper " + "delivery " + "and " + "routing " + "of " + "business " + "correspondence. " + "Max-length " + "[100].", + "example": "Mr.John", + "type": "string", + }, + "city": { + "description": "City name for the address. Max-length [100].", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country name for the address. Max-length [100].", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Fax number for the address. Max-length [50].", + "example": "+1-925-924-9600", + "type": "string", + }, + "phone": { + "description": "The " + "contact " + "phone " + "number " + "associated " + "with the " + "address. " + "Max-length " + "[50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "state": { + "description": "State for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "state_code": { + "description": "State or province code for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "street2": { + "description": "Street 2 address for the contact. Max-length [255].", + "example": "Suite 310", + "type": "string", + }, + "zip": { + "description": "Postal or ZIP code for the address. Max-length [50].", + "example": 94588, + "type": "string", + }, + }, + "type": "object", + }, + "company_name": { + "description": "Legal or registered contact's company " + "name. Used for legal documents and " + "formal communications. Max-length " + "[200].", + "example": "Bowman and Co", + "type": "string", + }, + "contact_name": { + "description": "Display name for the contact. It is " + "used for searching and displaying " + "contacts.", + "example": "Bowman and Co", + "type": "string", + }, + "contact_number": { + "description": "Contact number associated with the " + "contact for internal tracking and " + "identification purposes. Max-length " + "[200].", + "example": "CNT-001234", + "type": "string", + }, + "contact_persons": { + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person.", + "properties": { + "is_sms_enabled": { + "description": "Whether " + "SMS " + "text " + "messages " + "are " + "allowed " + "for " + "the " + "contact " + "person.", + "example": False, + "type": "boolean", + "x-node_available_in": ["SMS integration"], + }, + "is_whatsapp_enabled": { + "description": "Whether " + "WhatsApp " + "messaging " + "is " + "allowed " + "for " + "the " + "contact " + "person.", + "example": False, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "ID " + "of " + "the " + "contact " + "person. " + "For " + "an " + "existing " + "contact " + "person, " + "pass " + "the " + "contact_person_id.", + "example": 460000000026051, + "type": "string", + }, + "department": { + "description": "Department " + "of " + "the " + "contact " + "person " + "within " + "the " + "contact's " + "company. " + "Max-length " + "[50].", + "example": "Sales and Marketing", + "type": "string", + }, + "designation": { + "description": "Designation " + "of " + "the " + "contact " + "person " + "within " + "the " + "contact's " + "company. " + "Max-length " + "[100].", + "example": "Sales Executive", + "type": "string", + }, + "email": { + "description": "Email " + "address " + "of " + "the " + "contact " + "person " + "for " + "business " + "communications. " + "Max-length " + "[100].", + "example": "willsmith@bowmanfurniture.com", + "type": "string", + }, + "enable_portal": { + "description": "Indicates " + "whether " + "the " + "contact " + "person " + "should " + "have " + "access " + "to " + "the " + "client " + "portal. " + "Allowed " + "values: " + "true " + "and " + "false.", + "example": True, + "type": "boolean", + }, + "first_name": { + "description": "First name of the contact person. Max-length [100].", + "example": "Will", + "type": "string", + }, + "is_primary_contact": { + "description": "Indicates " + "whether " + "this " + "contact " + "person " + "is " + "the " + "primary " + "contact. " + "Only " + "one " + "per " + "contact. " + "Allowed " + "values: " + "true " + "and " + "false.", + "example": True, + "type": "boolean", + }, + "last_name": { + "description": "Last name of the contact person. Max-length [100].", + "example": "Smith", + "type": "string", + }, + "mobile": { + "description": "Mobile number of the contact person. Max-length [50].", + "example": "+1-4054439562", + "type": "string", + }, + "phone": { + "description": "Phone number of the contact person. Max-length [50].", + "example": "+1-925-921-9201", + "type": "string", + }, + "salutation": { + "description": "Salutation for the contact. Max-length [25]", + "example": "Mr", + "type": "string", + }, + "skype": { + "description": "Skype username of the contact person. Max-length [50].", + "example": "Zoho", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "contact_type": { + "description": "Determines how the contact is treated " + "in the system. Allowed values: " + "customer, " + "vendor.", + "example": "customer", + "type": "string", + }, + "country_code": { + "description": "For UK Edition: Two letter " + "country code of a contact
For " + "Avalara: Two letter country code " + "for the customer country, if your " + "customer is not in US. Refer [AvaTax " + "Codes for Countries and " + "States][2].
For GCC Editions " + ": Two Letter country code for the " + "GCC Country or the UAE emirate of the " + "contact which will be considered as " + "place of supply.
Supported " + "codes for UAE emirates are :
Abu " + "Dhabi - AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain - " + "UM.
Supported codes " + "for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia - " + "SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "type": "string", + "x-node_available_in": ["uk", "gcc", "Avalara Integration"], + "x-node_unavailable_in": [], + }, + "credit_limit": { + "description": "For Customer Only : The " + "maximum credit amount that can be " + "allowed for the customer. Once the " + "customer's outstanding receivables " + "reach this limit, the system will " + "restrict the customer from creating " + "any further transactions.", + "example": 1000, + "format": "double", + "type": "number", + }, + "currency_id": { + "description": "Unique identifier for the currency " + "assigned to this contact. The " + "currency_id must correspond to a valid " + "currency configuration in the system.", + "example": 460000000000097, + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "index": { + "description": "Index " + "of " + "the " + "custom " + "field. " + "It " + "can " + "hold " + "any " + "value " + "from " + "1 " + "to " + "10.", + "example": 1, + "type": "integer", + }, + "label": { + "description": "Label of the custom field.", + "example": "VAT ID", + "type": "string", + }, + "value": { + "description": "Value of the custom field.", + "example": "GBGD078", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_sub_type": { + "description": "For Customer Only : " + "Additional classification for " + "customers. Allowed values: " + "individual, " + "business.", + "example": "business", + "type": "string", + }, + "default_templates": { + "properties": { + "bill_template_id": { + "description": "Default " + "bill " + "template " + "id " + "used " + "for " + "this " + "vendor " + "while " + "creating " + "bill.", + "example": 460000000000103, + "type": "string", + }, + "creditnote_email_template_id": { + "description": "Default " + "credit " + "note " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "credit " + "notes.", + "example": 460000000052075, + "type": "string", + }, + "creditnote_template_id": { + "description": "Default " + "credit " + "note " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "credit " + "note.", + "example": 460000000000211, + "type": "string", + }, + "estimate_email_template_id": { + "description": "Default " + "estimate " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "estimates.", + "example": 460000000052073, + "type": "string", + }, + "estimate_template_id": { + "description": "Default " + "estimate " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "estimate.", + "example": 460000000000179, + "type": "string", + }, + "invoice_email_template_id": { + "description": "Default " + "invoice " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "invoices.", + "example": 460000000052071, + "type": "string", + }, + "invoice_template_id": { + "description": "Default " + "invoice " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "invoice.", + "example": 460000000052069, + "type": "string", + }, + "payment_remittance_email_template_id": { + "description": "Default " + "payment " + "remittance " + "email " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "payment " + "remittances.", + "example": 460000000000102, + "type": "string", + }, + "paymentthankyou_email_template_id": { + "description": "Default " + "payment " + "thank " + "you " + "email " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "payment " + "acknowledgment.", + "example": 460000000000221, + "type": "string", + }, + "paymentthankyou_template_id": { + "description": "Default " + "payment " + "thank " + "you " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "payment " + "acknowledgment.", + "example": 460000000000216, + "type": "string", + }, + "purchaseorder_email_template_id": { + "description": "Default " + "purchase " + "order " + "email " + "template " + "id " + "used " + "for " + "this " + "vendor " + "while " + "sending " + "purchase " + "order.", + "example": 460000000000218, + "type": "string", + }, + "purchaseorder_template_id": { + "description": "Default " + "purchase " + "order " + "template " + "id " + "used " + "for " + "this " + "vendor " + "while " + "creating " + "purchase " + "order.", + "example": 460000000000213, + "type": "string", + }, + "retainerinvoice_email_template_id": { + "description": "Default " + "retainer " + "invoice " + "email " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "sending " + "retainer " + "invoice.", + "example": 460000000000220, + "type": "string", + }, + "retainerinvoice_paymentthankyou_email_template_id": { + "description": "Default " + "retainer " + "invoice " + "payment " + "thank " + "you " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "payment " + "acknowledgment " + "for " + "retainer " + "invoices.", + "example": 460000000000222, + "type": "string", + }, + "retainerinvoice_paymentthankyou_template_id": { + "description": "Default " + "retainer " + "invoice " + "payment " + "thank " + "you " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "payment " + "acknowledgment " + "for " + "retainer " + "invoices.", + "example": 460000000000217, + "type": "string", + }, + "retainerinvoice_template_id": { + "description": "Default " + "retainer " + "invoice " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "retainer " + "invoice.", + "example": 460000000000215, + "type": "string", + }, + "salesorder_email_template_id": { + "description": "Default " + "sales " + "order " + "email " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "sending " + "sales " + "order.", + "example": 460000000000219, + "type": "string", + }, + "salesorder_template_id": { + "description": "Default " + "sales " + "order " + "template " + "id " + "used " + "for " + "this " + "customer " + "while " + "creating " + "sales " + "order.", + "example": 460000000000214, + "type": "string", + }, + "statement_template_id": { + "description": "Default " + "statement " + "template " + "id " + "used " + "for " + "this " + "contact " + "while " + "creating " + "statement.", + "example": 460000000000101, + "type": "string", + }, + }, + "type": "object", + }, + "facebook": { + "description": "Facebook profile URL for the contact. Max-length [100].", + "example": "zoho", + "type": "string", + }, + "gst_no": { + "description": "15-digit GST identification number of the " + "contact as issued by the Indian tax " + "authorities.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "ignore_auto_number_generation": { + "description": "Indicates whether " + "the auto generation " + "contact_number is " + "ignored or not for " + "the contact. Allowed " + "values: " + "true, " + "false.", + "example": False, + "type": "boolean", + }, + "is_taxable": { + "description": "Indicates whether the customer is " + "subject to tax collection. Tax-related " + "fields are only available when this " + "field is set to true. Allowed values: " + "true and " + "false.", + "example": True, + "type": "boolean", + "x-node_available_in": ["us", "ca", "au", "in", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "is_tds_registered": { + "description": "Indicates whether the contact is " + "registered for Tax Deducted at " + "Source (TDS) in Mexico.", + "type": "boolean", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "legal_name": { + "description": "Official legal name of the contact as " + "registered with tax authorities in " + "Mexico.", + "example": "ESCUELA KEMPER URGATE", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "notes": { + "description": "Additional comments or notes about the contact.", + "example": "Payment option : Through check", + "type": "string", + }, + "opening_balances": { + "items": { + "properties": { + "exchange_rate": { + "description": "Currency " + "exchange " + "rate " + "used " + "to " + "convert " + "opening " + "balance " + "to " + "organization's " + "base " + "currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "associated " + "with " + "this " + "opening " + "balance.", + "example": "460000000038080", + "type": "string", + }, + "opening_balance_amount": { + "description": "Initial " + "balance " + "amount " + "for " + "the " + "contact " + "at " + "the " + "time " + "of " + "creation.", + "example": 1200, + "format": "double", + "type": "number", + }, + }, + "type": "object", + }, + "type": "array", + }, + "owner_id": { + "description": "For Customer Only : Unique " + "identifier for the user assigned as the " + "owner of the contact. This field " + "specifies which user in the organization " + "is responsible for managing the business " + "relationship with this contact.", + "example": 460000000016051, + "type": "string", + }, + "payment_terms": { + "description": "Number of days allowed for payment after the invoice date.", + "example": 15, + "type": "integer", + }, + "payment_terms_label": { + "description": "Human-readable label of " + "payment terms displayed on " + "invoices and other " + "transactions. Max-length " + "[200].", + "example": "Net 15", + "type": "string", + }, + "place_of_contact": { + "description": "State or union territory code " + "where the contact is located for " + "Indian tax purposes. (This node " + "identifies the place of supply " + "and source of supply when " + "invoices/bills are raised for the " + "customer/vendor respectively. " + "This is not applicable for " + "Overseas contacts)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Pricebook id which is associated with " + "the contact. Max-length [200].", + "example": 460000000000123, + "type": "string", + }, + "shipping_address": { + "description": "Shipping address information for the contact.", + "properties": { + "address": { + "description": "Street 1 address for the contact. Max-length [500].", + "example": "4900 Hopyard Rd", + "type": "string", + }, + "attention": { + "description": "Attention " + "for " + "proper " + "delivery " + "and " + "routing " + "of " + "business " + "correspondence. " + "Max-length " + "[100].", + "example": "Mr.John", + "type": "string", + }, + "city": { + "description": "City name for the address. Max-length [100].", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country name for the address. Max-length [100].", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Fax number for the address. Max-length [50].", + "example": "+1-925-924-9600", + "type": "string", + }, + "phone": { + "description": "The " + "contact " + "phone " + "number " + "associated " + "with the " + "address. " + "Max-length " + "[50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "state": { + "description": "State for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "state_code": { + "description": "State or province code for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "street2": { + "description": "Street 2 address for the contact. Max-length [255].", + "example": "Suite 310", + "type": "string", + }, + "zip": { + "description": "Postal or ZIP code for the address. Max-length [50].", + "example": 94588, + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Filter all your reports based on the tag", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 462000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 462000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_authority_id": { + "description": "Unique identifier for the tax " + "authority responsible for the " + "customer's tax jurisdiction. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": 11149000000061052, + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Display name of the tax " + "authority responsible for the " + "customer's tax jurisdiction.", + "type": "string", + }, + "tax_exemption_certificate_number": { + "description": "Tax Exemption " + "Certificate " + "number is issued " + "by the Kenya " + "Revenue Authority " + "(KRA) to " + "organizations or " + "individuals who " + "qualify for tax " + "exemption", + "example": "KRAEXM0043310521", + "type": "string", + "x-node_available_in": ["ke"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Code identifier for the tax exemption assigned to the contact.", + "type": "string", + "x-node_available_in": ["us", "ca", "au", "in"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique identifier for the tax " + "exemption configuration assigned " + "to this contact.", + "example": 11149000000061054, + "type": "string", + "x-node_available_in": ["us", "ca", "au", "in"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier for the tax or tax group " + "assigned to the contact. Available only " + "when is_taxable is " + "true.", + "example": 11149000000061058, + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id_type": { + "description": "Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN.", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_id_value": { + "description": "Tax ID of the contact.", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_reg_no": { + "description": "For GCC Edition: 15 digit Tax " + "Registration number of a contact with " + "Tax treatment as " + "vat_registered,gcc_vat_registered,dz_vat_registered.
For " + "Mexico Edition: 12 digit Tax " + "Registration number of a contact with " + "Tax treatment as
" + "home_country_mexico, " + "border_region_mexico, " + "non_mexico.
Consumers " + "generic RFC: " + "XAXX010101000, Overseas " + "generic RFC: " + "XEXX010101000.
For " + "Kenya Edition: 11 digit Tax " + "Registration number of a contact with " + "Tax treatment as " + "vat_registered
For " + "SouthAfrica Edition: 10 digit Tax " + "Registration number of a contact with " + "Tax treatment as " + "vat_registered", + "example": 12345678912345, + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "tax_regime": { + "description": "Tax Regime of the contact.Allowed " + "Values: " + "general_legal_person, " + "legal_entities_non_profit, " + "resident_abroad, " + "production_cooperative_societies, " + "agricultural_livestock, " + "optional_group_of_companies, " + "coordinated, " + "simplified_trust, " + "wages_salaries_income, " + "lease, " + "property_disposal_acquisition, " + "other_income, " + "resident_abroad, " + "divident_income, " + "individual_business_professional, " + "interest_income, " + "income_obtaining_price, " + "no_tax_obligation, " + "tax_incorporation, " + "income_through_technology_platform, " + "simplified_trust.", + "example": "general_legal_person", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "Tax treatment of the " + "contact.
Allowed Values: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered " + "and " + "dz_vat_not_registered
home_country_mexico " + "(A business that is located within " + "MX)
border_region_mexico " + "(A business that is located in the " + "northern and southern border regions " + "in MX)
non_mexico " + "(A business that is located outside " + "MX).
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "track_1099": { + "description": "Boolean to track a contact for 1099 reporting.", + "type": "boolean", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "twitter": { + "description": "X profile URL for the contact. Max-length [100].", + "example": "zoho", + "type": "string", + }, + "vat_reg_no": { + "description": "For UK Edition: VAT Registration " + "number of a contact with length should " + "be between 2 and 12 characters.
" + "For Avalara: If you are doing " + "sales in the European Union (EU) then " + "provide VAT Registration Number of your " + "customers here. This is used to " + "calculate VAT for B2B sales, from " + "Avalara.", + "type": "string", + "x-node_available_in": ["uk", "Avalara Integration"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment of the contact.Allowed " + "Values:
uk (A " + "business that is located in the " + "UK.),
eu_vat_registered " + "(A business that is reg for VAT and " + "trade goods between Northern Ireland " + "and EU. This node is available only " + "for organizations enabled for NI " + "protocal in VAT Settings.) " + "and
overseas (A " + "business that is located outside UK. " + "Pre Brexit, this was split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu ).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "website": { + "description": "Official website URL of the contact.", + "example": "www.bowmanfurniture.com", + "type": "string", + }, + }, + "required": ["contact_name"], + "type": "object", + }, + "ENABLECONTACTPORTALACCESS_REQUEST_BODY_SCHEMA": { + "properties": { + "contact_persons": { + "items": { + "properties": { + "contact_person_id": { + "description": "Unique " + "identifier " + "for " + "the " + "contact " + "person. " + "System-generated " + "ID " + "for " + "API " + "operations.", + "example": 460000000026051, + "type": "string", + } + }, + "type": "object", + }, + "type": "array", + } + }, + "required": ["contact_persons"], + "type": "object", + }, + "EMAILCONTACTSTATEMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "body": { + "description": "Body of an email has to be sent. Max-length [5000]", + "example": "Dear Customer,
We have attached with " + "this email a list of all your transactions with " + "us for the period 01 Sep 2013 to 30 Sep 2013. You " + "can write to us or call us if you need any " + "assistance or clarifications.
Thanks for " + "your business.
Regards
Zillium Inc", + "type": "string", + }, + "cc_mail_ids": { + "description": "Array of email address of the recipients to be cced.", + "example": ["peterparker@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + "send_from_org_email_id": { + "description": "Boolean to trigger the email from the organization's email address", + "example": True, + "type": "boolean", + }, + "subject": { + "description": "Subject of an email has to be sent. Max-length [1000]", + "example": "Statement of transactions with Zillium Inc", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email address of the recipients.", + "example": ["willsmith@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids", "subject", "body"], + "type": "object", + }, + "SENDEMAILTOCONTACT_REQUEST_BODY_SCHEMA": { + "properties": { + "attachments": { + "description": "Files to be attached to the email. It " + "has to be sent in multipart/formdata", + "format": "binary", + "type": "string", + }, + "body": { + "description": "Body of an email has to be sent. Max-length [5000]", + "example": "Dear Customer,
We have attached with " + "this email a list of all your transactions with " + "us for the period 01 Sep 2013 to 30 Sep 2013. You " + "can write to us or call us if you need any " + "assistance or clarifications.
Thanks for " + "your business.
Regards
Zillium Inc", + "type": "string", + }, + "subject": { + "description": "Subject of an email has to be sent. Max-length [1000]", + "example": "Welcome to Zillium Inc .", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email address of the recipients.", + "example": ["willsmith@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids", "subject", "body"], + "type": "object", + }, + "ADDCONTACTADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Street 1 address for the contact. Max-length [500].", + "example": "4900 Hopyard Rd", + "type": "string", + }, + "attention": { + "description": "Attention for proper delivery and " + "routing of business correspondence. " + "Max-length [100].", + "example": "Mr.John", + "type": "string", + }, + "city": { + "description": "City name for the address. Max-length [100].", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country name for the address. Max-length [100].", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Fax number for the address. Max-length [50].", + "example": "+1-925-924-9600", + "type": "string", + }, + "phone": { + "description": "The contact phone number associated with the " + "address. Max-length [50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "state": { + "description": "State for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "street2": { + "description": "Street 2 address for the contact. Max-length [255].", + "example": "Suite 310", + "type": "string", + }, + "zip": { + "description": "Postal or ZIP code for the address. Max-length [50].", + "example": 94588, + "type": "string", + }, + }, + "type": "object", + }, + "UPDATECONTACTADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Street 1 address for the contact. Max-length [500].", + "example": "4900 Hopyard Rd", + "type": "string", + }, + "address_id": { + "description": "Address id of the address", + "example": 1053791000000186000, + "type": "string", + }, + "attention": { + "description": "Attention for proper delivery and " + "routing of business correspondence. " + "Max-length [100].", + "example": "Mr.John", + "type": "string", + }, + "city": { + "description": "City name for the address. Max-length [100].", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country name for the address. Max-length [100].", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Fax number for the address. Max-length [50].", + "example": "+1-925-924-9600", + "type": "string", + }, + "phone": { + "description": "The contact phone number associated with the " + "address. Max-length [50]", + "example": "+1-925-921-9201", + "type": "string", + }, + "state": { + "description": "State for the address. Max-length [100].", + "example": "CA", + "type": "string", + }, + "street2": { + "description": "Street 2 address for the contact. Max-length [255].", + "example": "Suite 310", + "type": "string", + }, + "zip": { + "description": "Postal or ZIP code for the address. Max-length [50].", + "example": 94588, + "type": "string", + }, + }, + "required": ["address_id"], + "type": "object", + }, + "CREATECREDITNOTE_REQUEST_BODY_SCHEMA": { + "properties": { + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used " + "to group Items (products, " + "services, or charges) together. " + "Refer the [link][2] for more " + "deails. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "cfdi_reference_type": { + "description": "Choose CFDI Reference " + "Type.
Allowed values: " + "credit_note, " + "debit_note, " + "return_of_merchandise, " + "substitution_previous_cfdi, " + "transfer_of_goods, " + "invoice_generated_from_order, " + "cfdi_for_advance.", + "example": "return_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "cfdi_usage": { + "description": "Choose CFDI Usage.
Allowed values: " + "acquisition_of_merchandise, " + "return_discount_bonus, " + "general_expense, " + "buildings, " + "furniture_office_equipment, " + "transport_equipment, " + "computer_equipmentdye_molds_tools, " + "telephone_communication, " + "satellite_communication, " + "other_machinery_equipment, " + "hospital_expense, " + "medical_expense_disability, " + "funeral_expense, " + "donation, " + "interest_mortage_loans, " + "contribution_sar, " + "medical_expense_insurance_pormium, " + "school_transportation_expense, " + "deposit_saving_account, " + "payment_educational_service, " + "no_tax_effect, " + "payment, " + "payroll.", + "example": "acquisition_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "creditnote_number": { + "description": "Unique credit note number " + "displayed in the interface. " + "Auto-generated with CN prefix " + "unless " + "ignore_auto_number_generation is " + "true. Max-Length [100]", + "example": "CN-29", + "type": "string", + }, + "currency_id": { + "description": "Unique identifier for the currency " + "used in the credit note. Can differ " + "from customer currency if " + "multi-currency is enabled. Retrieve " + "currency IDs from the List Currencies " + "API endpoint in the currency section.", + "example": "982000000567240", + "type": "string", + }, + "custom_fields": { + "description": "Additional fields for the Credit-Notes.", + "items": {"type": "string"}, + "type": "array", + }, + "customer_id": { + "description": "Unique identifier for the customer " + "contact. Retrieve customer IDs from " + "the Get Customers API endpoint in the " + "contacts section. This ID links the " + "credit note to the specific customer " + "record.", + "example": "903000000000099", + "type": "string", + }, + "date": { + "description": "The date on which the credit note is raised. " + "Must be in yyyy-mm-dd format. This date " + "determines the accounting period and affects " + "tax calculations.", + "example": "2016-06-05", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for converting the " + "credit note currency to base " + "currency. Required when currency " + "differs from base currency. Retrieve " + "rates from currency exchange rate " + "APIs.", + "example": "5.5", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "ignore_auto_number_generation": { + "description": "Set to true to " + "provide a custom " + "credit note number " + "instead of " + "auto-generated CN " + "prefix. When true, " + "you must specify " + "creditnote_number " + "manually.", + "example": False, + "type": "boolean", + }, + "is_draft": { + "description": "Set to true to create the credit note in " + "draft status. Draft credit notes are not " + "finalized and can be modified before " + "sending to customers.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": "fasle", + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "line_items": { + "description": "Array of line items for the credit " + "note. Each line item represents a " + "product or service being credited to " + "the customer.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "for " + "the " + "chart " + "of " + "accounts " + "entry. " + "Retrieve " + "account " + "IDs " + "from " + "the " + "List " + "Chart " + "of " + "Accounts " + "API " + "endpoint. " + "Determines " + "which " + "account " + "the " + "line " + "item " + "affects " + "for " + "accounting " + "purposes.", + "example": "903000000000388", + "type": "string", + }, + "account_name": { + "description": "Name " + "of " + "the " + "chart " + "of " + "accounts " + "entry. " + "Displays " + "the " + "account " + "name " + "for " + "reference " + "and " + "reporting " + "purposes. " + "Should " + "match " + "the " + "account_id " + "provided.", + "example": "Sales", + "type": "string", + }, + "code": { + "description": "Unique " + "code " + "or " + "SKU " + "for " + "the " + "line " + "item. " + "Used " + "for " + "product " + "identification " + "and " + "inventory " + "tracking. " + "Helps " + "distinguish " + "between " + "different " + "variants " + "of " + "the " + "same " + "product.", + "example": "basic-monthly", + "type": "string", + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item. " + "Provides " + "additional " + "information " + "about " + "the " + "product " + "or " + "service " + "being " + "credited. " + "Displayed " + "on " + "the " + "credit " + "note " + "document.", + "example": "prorated amount for items", + "type": "string", + }, + "invoice_id": { + "description": "Invoice ID of the required invoice.", + "example": "90300000079426", + "type": "string", + }, + "invoice_item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "invoice " + "line " + "item " + "that " + "this " + "credit " + "note " + "line " + "item " + "references. " + "Use " + "this " + "when " + "creating " + "a " + "credit " + "note " + "for " + "a " + "specific " + "invoice " + "line " + "item.", + "example": "982000000567021", + "type": "string", + }, + "item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "item " + "in " + "the " + "line " + "item. " + "Retrieve " + "item " + "IDs " + "from " + "the " + "List " + "Items " + "API " + "endpoint " + "in " + "the " + "items " + "section. " + "Links " + "the " + "line " + "item " + "to " + "a " + "specific " + "product " + "or " + "service.", + "example": "90300000081501", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "associated " + "with " + "the " + "line " + "item. " + "Retrieve " + "location " + "IDs " + "from " + "the " + "List " + "Locations " + "API " + "endpoint " + "in " + "the " + "locations " + "section. " + "Determines " + "tax " + "settings " + "and " + "business " + "rules " + "for " + "this " + "line " + "item.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "or " + "title " + "of " + "the " + "line " + "item. " + "Describes " + "the " + "product " + "or " + "service " + "being " + "credited. " + "This " + "name " + "is " + "displayed " + "on " + "the " + "credit " + "note " + "document.", + "example": "Basic Monthly", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "product " + "or " + "service " + "for " + "the " + "line " + "item. " + "Standard " + "values: " + "goods " + "or " + "services. " + "For " + "South " + "Africa: " + "service, " + "goods, " + "capital_service, " + "and " + "capital_goods.", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "Unique " + "identifier " + "for " + "the " + "project " + "associated " + "with " + "the " + "line " + "item. " + "Links " + "the " + "credit " + "to " + "a " + "specific " + "project " + "for " + "project-based " + "accounting " + "and " + "reporting.", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "being " + "credited " + "for " + "this " + "line " + "item. " + "Must " + "be " + "a " + "positive " + "number. " + "Used " + "to " + "calculate " + "the " + "total " + "amount " + "for " + "the " + "line " + "item.", + "example": 1, + "format": "int32", + "type": "integer", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "serial_numbers": { + "description": "Serial " + "numbers " + "of " + "the " + "items " + "being " + "credited. " + "Used " + "for " + "tracking " + "specific " + "units " + "of " + "inventory " + "or " + "equipment. " + "Important " + "for " + "warranty " + "and " + "return " + "tracking.", + "type": "string", + }, + "tax_id": { + "description": "Unique " + "identifier " + "for " + "the " + "tax " + "applied " + "to " + "the " + "line " + "item. " + "Retrieve " + "tax " + "IDs " + "from " + "the " + "List " + "Taxes " + "API " + "endpoint " + "in " + "the " + "taxes " + "section. " + "Determines " + "tax " + "calculations " + "for " + "this " + "specific " + "line " + "item.", + "example": "903000000000356", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "Unique " + "ID " + "to " + "denote " + "the " + "TDS " + "tax " + "associated " + "to " + "the " + "creditnote", + "example": "903000000000357", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "type": { + "description": "Type " + "of " + "the " + "credit " + "note " + "line " + "item. " + "Numeric " + "value " + "indicating " + "the " + "line " + "item " + "type " + "(e.g., " + "1 for " + "product, " + "2 for " + "service). " + "Used " + "for " + "categorization " + "and " + "reporting " + "purposes.", + "example": 1, + "type": "integer", + }, + "unitkey_code": { + "description": "Add " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "box", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location associated with the line " + "item. Retrieve location IDs from the " + "List Locations API endpoint in the " + "locations section. Determines tax " + "settings and business rules for this " + "line item.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional notes or comments for the credit " + "note. Displayed on the credit note document " + "for customer reference. Max-length [5000]", + "example": "Offer for the referral", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "Optional reference number for " + "tracking purposes. Can be any " + "custom string or auto-generated. " + "Useful for linking to external " + "systems or internal tracking. " + "Max-Length [100]", + "example": "INV-384", + "type": "string", + }, + "tax_authority_id": { + "description": "Unique ID of the tax authority. " + "Tax authority depends on the " + "location of the customer. For " + "example, if the customer is " + "located in NY, then the tax " + "authority is NY tax authority.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier for the tax applied to " + "the line item. Retrieve tax IDs from the " + "List Taxes API endpoint in the taxes " + "section. Determines tax calculations for " + "this specific line item.", + "example": "903000000000356", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the credit note " + ".Choose whether the contact falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier for the credit note " + "PDF template. Retrieve template IDs " + "from the List Credit Note Templates " + "API endpoint. Determines the visual " + "layout and branding of the credit note " + "document.", + "example": "90300000001336", + "type": "string", + }, + "terms": { + "description": "Terms and conditions displayed on the credit " + "note document. Include payment terms, return " + "policies, or other business conditions. " + "Max-length [10000]", + "example": "", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "invoices. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "overseas", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["customer_id", "date", "creditnote_number", "line_items"], + "type": "object", + }, + "UPDATECREDITNOTEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "Unique identifier for the chart of " + "accounts entry. Retrieve account IDs " + "from the List Chart of Accounts API " + "endpoint. Determines which account the " + "line item affects for accounting " + "purposes.", + "example": "903000000000388", + "type": "string", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used " + "to group Items (products, " + "services, or charges) together. " + "Refer the [link][2] for more " + "deails. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "cfdi_reference_type": { + "description": "Choose CFDI Reference " + "Type.
Allowed values: " + "credit_note, " + "debit_note, " + "return_of_merchandise, " + "substitution_previous_cfdi, " + "transfer_of_goods, " + "invoice_generated_from_order, " + "cfdi_for_advance.", + "example": "return_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "cfdi_usage": { + "description": "Choose CFDI Usage.
Allowed values: " + "acquisition_of_merchandise, " + "return_discount_bonus, " + "general_expense, " + "buildings, " + "furniture_office_equipment, " + "transport_equipment, " + "computer_equipmentdye_molds_tools, " + "telephone_communication, " + "satellite_communication, " + "other_machinery_equipment, " + "hospital_expense, " + "medical_expense_disability, " + "funeral_expense, " + "donation, " + "interest_mortage_loans, " + "contribution_sar, " + "medical_expense_insurance_pormium, " + "school_transportation_expense, " + "deposit_saving_account, " + "payment_educational_service, " + "no_tax_effect, " + "payment, " + "payroll.", + "example": "acquisition_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "creditnote_number": { + "description": "Unique credit note number " + "displayed in the interface. " + "Auto-generated with CN prefix " + "unless " + "ignore_auto_number_generation is " + "true. Max-Length [100]", + "example": "CN-29", + "type": "string", + }, + "currency_id": { + "description": "Unique identifier for the currency " + "used in the credit note. Can differ " + "from customer currency if " + "multi-currency is enabled. Retrieve " + "currency IDs from the List Currencies " + "API endpoint in the currency section.", + "example": "982000000567240", + "type": "string", + }, + "custom_fields": { + "description": "Additional fields for the Credit-Notes.", + "items": {"type": "string"}, + "type": "array", + }, + "customer_id": { + "description": "Unique identifier for the customer " + "contact. Retrieve customer IDs from " + "the Get Customers API endpoint in the " + "contacts section. This ID links the " + "credit note to the specific customer " + "record.", + "example": "903000000000099", + "type": "string", + }, + "date": { + "description": "The date on which the credit note is raised. " + "Must be in yyyy-mm-dd format. This date " + "determines the accounting period and affects " + "tax calculations.", + "example": "2016-06-05", + "type": "string", + }, + "description": { + "description": "Detailed description of the line item. " + "Provides additional information about " + "the product or service being credited. " + "Displayed on the credit note document.", + "example": "prorated amount for items", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for converting the " + "credit note currency to base " + "currency. Required when currency " + "differs from base currency. Retrieve " + "rates from currency exchange rate " + "APIs.", + "example": "5.5", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "ignore_auto_number_generation": { + "description": "Set to true to " + "provide a custom " + "credit note number " + "instead of " + "auto-generated CN " + "prefix. When true, " + "you must specify " + "creditnote_number " + "manually.", + "example": False, + "type": "boolean", + }, + "is_draft": { + "description": "Set to true to create the credit note in " + "draft status. Draft credit notes are not " + "finalized and can be modified before " + "sending to customers.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": "fasle", + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique identifier for the item in the line " + "item. Retrieve item IDs from the List " + "Items API endpoint in the items section. " + "Links the line item to a specific product " + "or service.", + "example": "90300000081501", + "type": "string", + }, + "line_items": { + "description": "Line items of a credit note.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "for " + "the " + "chart " + "of " + "accounts " + "entry. " + "Retrieve " + "account " + "IDs " + "from " + "the " + "List " + "Chart " + "of " + "Accounts " + "API " + "endpoint. " + "Determines " + "which " + "account " + "the " + "line " + "item " + "affects " + "for " + "accounting " + "purposes.", + "example": "903000000000388", + "type": "string", + }, + "avatax_tax_code": { + "description": "A " + "tax " + "code " + "is " + "a " + "unique " + "label " + "used " + "to " + "group " + "Items " + "(products, " + "services, " + "or " + "charges) " + "together. " + "Refer " + "the " + "[link][2] " + "for " + "more " + "deails. " + "Max-length " + "[25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used " + "to " + "group " + "like " + "customers " + "for " + "exemption " + "purposes. " + "It " + "is " + "a " + "custom " + "value " + "that " + "links " + "customers " + "to " + "a " + "tax " + "rule. " + "Select " + "from " + "Avalara " + "[standard " + "codes][1] " + "or " + "enter " + "a " + "custom " + "code. " + "Max-length " + "[25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item. " + "Provides " + "additional " + "information " + "about " + "the " + "product " + "or " + "service " + "being " + "credited. " + "Displayed " + "on " + "the " + "credit " + "note " + "document.", + "example": "prorated amount for items", + "type": "string", + }, + "discount": { + "description": "Enter discount percentage.", + "example": 10, + "format": "double", + "type": "number", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_custom_fields": { + "description": "Enter custom field information", + "items": {"type": "string"}, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "item " + "in " + "the " + "line " + "item. " + "Retrieve " + "item " + "IDs " + "from " + "the " + "List " + "Items " + "API " + "endpoint " + "in " + "the " + "items " + "section. " + "Links " + "the " + "line " + "item " + "to " + "a " + "specific " + "product " + "or " + "service.", + "example": "90300000081501", + "type": "string", + }, + "item_order": { + "description": "Enter order of the item", + "example": 0, + "type": "integer", + }, + "line_item_id": { + "description": "Search credit notes by credit note line item id.", + "example": 903000006245, + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "associated " + "with " + "the " + "line " + "item. " + "Retrieve " + "location " + "IDs " + "from " + "the " + "List " + "Locations " + "API " + "endpoint " + "in " + "the " + "locations " + "section. " + "Determines " + "tax " + "settings " + "and " + "business " + "rules " + "for " + "this " + "line " + "item.", + "example": "460000000038080", + "type": "string", + }, + "location_name": {"description": "Name of the location.", "type": "string"}, + "name": { + "description": "Name " + "or " + "title " + "of " + "the " + "line " + "item. " + "Describes " + "the " + "product " + "or " + "service " + "being " + "credited. " + "This " + "name " + "is " + "displayed " + "on " + "the " + "credit " + "note " + "document.", + "example": "Basic Monthly", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "product " + "or " + "service " + "for " + "the " + "line " + "item. " + "Standard " + "values: " + "goods " + "or " + "services. " + "For " + "South " + "Africa: " + "service, " + "goods, " + "capital_service, " + "and " + "capital_goods.", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "Unique " + "identifier " + "for " + "the " + "project " + "associated " + "with " + "the " + "line " + "item. " + "Links " + "the " + "credit " + "to " + "a " + "specific " + "project " + "for " + "project-based " + "accounting " + "and " + "reporting.", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "being " + "credited " + "for " + "this " + "line " + "item. " + "Must " + "be " + "a " + "positive " + "number. " + "Used " + "to " + "calculate " + "the " + "total " + "amount " + "for " + "the " + "line " + "item.", + "example": 1, + "format": "int32", + "type": "integer", + }, + "rate": { + "description": "Rate of the line item.", + "example": 0, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "serial_numbers": { + "description": "Serial " + "numbers " + "of " + "the " + "items " + "being " + "credited. " + "Used " + "for " + "tracking " + "specific " + "units " + "of " + "inventory " + "or " + "equipment. " + "Important " + "for " + "warranty " + "and " + "return " + "tracking.", + "type": "string", + }, + "tax_exemption_code": { + "description": "Unique code of the tax exemption.", + "example": "GST FREE", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "for " + "the " + "tax " + "applied " + "to " + "the " + "line " + "item. " + "Retrieve " + "tax " + "IDs " + "from " + "the " + "List " + "Taxes " + "API " + "endpoint " + "in " + "the " + "taxes " + "section. " + "Determines " + "tax " + "calculations " + "for " + "this " + "specific " + "line " + "item.", + "example": "903000000000356", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "Unique " + "ID " + "to " + "denote " + "the " + "TDS " + "tax " + "associated " + "to " + "the " + "creditnote", + "example": "903000000000357", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit of the line item. E.g: kgs, Nos.", + "example": "kgs", + "type": "string", + }, + "unitkey_code": { + "description": "Add " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "box", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location associated with the line " + "item. Retrieve location IDs from the " + "List Locations API endpoint in the " + "locations section. Determines tax " + "settings and business rules for this " + "line item.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name or title of the line item. Describes the " + "product or service being credited. This name " + "is displayed on the credit note document.", + "example": "Basic Monthly", + "type": "string", + }, + "notes": { + "description": "Additional notes or comments for the credit " + "note. Displayed on the credit note document " + "for customer reference. Max-length [5000]", + "example": "Offer for the referral", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "quantity": { + "description": "Number of units being credited for this " + "line item. Must be a positive number. " + "Used to calculate the total amount for " + "the line item.", + "example": 1, + "format": "int32", + "type": "integer", + }, + "rate": { + "description": "Rate of the line item.", + "example": 0, + "format": "double", + "type": "number", + }, + "reference_number": { + "description": "Optional reference number for " + "tracking purposes. Can be any " + "custom string or auto-generated. " + "Useful for linking to external " + "systems or internal tracking. " + "Max-Length [100]", + "example": "INV-384", + "type": "string", + }, + "tax_authority_id": { + "description": "Unique ID of the tax authority. " + "Tax authority depends on the " + "location of the customer. For " + "example, if the customer is " + "located in NY, then the tax " + "authority is NY tax authority.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier for the tax applied to " + "the line item. Retrieve tax IDs from the " + "List Taxes API endpoint in the taxes " + "section. Determines tax calculations for " + "this specific line item.", + "example": "903000000000356", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the credit note " + ".Choose whether the contact falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier for the credit note " + "PDF template. Retrieve template IDs " + "from the List Credit Note Templates " + "API endpoint. Determines the visual " + "layout and branding of the credit note " + "document.", + "example": "90300000001336", + "type": "string", + }, + "terms": { + "description": "Terms and conditions displayed on the credit " + "note document. Include payment terms, return " + "policies, or other business conditions. " + "Max-length [10000]", + "example": "", + "type": "string", + }, + "unit": { + "description": "Unit of the line item. E.g: kgs, Nos.", + "example": "kgs", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "invoices. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "overseas", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["customer_id", "date", "creditnote_number", "line_items"], + "type": "object", + }, + "UPDATECREDITNOTEDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "Unique identifier for the chart of " + "accounts entry. Retrieve account IDs " + "from the List Chart of Accounts API " + "endpoint. Determines which account the " + "line item affects for accounting " + "purposes.", + "example": "903000000000388", + "type": "string", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used " + "to group Items (products, " + "services, or charges) together. " + "Refer the [link][2] for more " + "deails. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "cfdi_reference_type": { + "description": "Choose CFDI Reference " + "Type.
Allowed values: " + "credit_note, " + "debit_note, " + "return_of_merchandise, " + "substitution_previous_cfdi, " + "transfer_of_goods, " + "invoice_generated_from_order, " + "cfdi_for_advance.", + "example": "return_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "cfdi_usage": { + "description": "Choose CFDI Usage.
Allowed values: " + "acquisition_of_merchandise, " + "return_discount_bonus, " + "general_expense, " + "buildings, " + "furniture_office_equipment, " + "transport_equipment, " + "computer_equipmentdye_molds_tools, " + "telephone_communication, " + "satellite_communication, " + "other_machinery_equipment, " + "hospital_expense, " + "medical_expense_disability, " + "funeral_expense, " + "donation, " + "interest_mortage_loans, " + "contribution_sar, " + "medical_expense_insurance_pormium, " + "school_transportation_expense, " + "deposit_saving_account, " + "payment_educational_service, " + "no_tax_effect, " + "payment, " + "payroll.", + "example": "acquisition_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "creditnote_number": { + "description": "Unique credit note number " + "displayed in the interface. " + "Auto-generated with CN prefix " + "unless " + "ignore_auto_number_generation is " + "true. Max-Length [100]", + "example": "CN-29", + "type": "string", + }, + "currency_id": { + "description": "Unique identifier for the currency " + "used in the credit note. Can differ " + "from customer currency if " + "multi-currency is enabled. Retrieve " + "currency IDs from the List Currencies " + "API endpoint in the currency section.", + "example": "982000000567240", + "type": "string", + }, + "custom_fields": { + "description": "Additional fields for the Credit-Notes.", + "items": {"type": "string"}, + "type": "array", + }, + "customer_id": { + "description": "Unique identifier for the customer " + "contact. Retrieve customer IDs from " + "the Get Customers API endpoint in the " + "contacts section. This ID links the " + "credit note to the specific customer " + "record.", + "example": "903000000000099", + "type": "string", + }, + "date": { + "description": "The date on which the credit note is raised. " + "Must be in yyyy-mm-dd format. This date " + "determines the accounting period and affects " + "tax calculations.", + "example": "2016-06-05", + "type": "string", + }, + "description": { + "description": "Detailed description of the line item. " + "Provides additional information about " + "the product or service being credited. " + "Displayed on the credit note document.", + "example": "prorated amount for items", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for converting the " + "credit note currency to base " + "currency. Required when currency " + "differs from base currency. Retrieve " + "rates from currency exchange rate " + "APIs.", + "example": "5.5", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "ignore_auto_number_generation": { + "description": "Set to true to " + "provide a custom " + "credit note number " + "instead of " + "auto-generated CN " + "prefix. When true, " + "you must specify " + "creditnote_number " + "manually.", + "example": False, + "type": "boolean", + }, + "is_draft": { + "description": "Set to true to create the credit note in " + "draft status. Draft credit notes are not " + "finalized and can be modified before " + "sending to customers.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": "fasle", + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique identifier for the item in the line " + "item. Retrieve item IDs from the List " + "Items API endpoint in the items section. " + "Links the line item to a specific product " + "or service.", + "example": "90300000081501", + "type": "string", + }, + "line_items": { + "description": "Line items of a credit note.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "for " + "the " + "chart " + "of " + "accounts " + "entry. " + "Retrieve " + "account " + "IDs " + "from " + "the " + "List " + "Chart " + "of " + "Accounts " + "API " + "endpoint. " + "Determines " + "which " + "account " + "the " + "line " + "item " + "affects " + "for " + "accounting " + "purposes.", + "example": "903000000000388", + "type": "string", + }, + "avatax_tax_code": { + "description": "A " + "tax " + "code " + "is " + "a " + "unique " + "label " + "used " + "to " + "group " + "Items " + "(products, " + "services, " + "or " + "charges) " + "together. " + "Refer " + "the " + "[link][2] " + "for " + "more " + "deails. " + "Max-length " + "[25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used " + "to " + "group " + "like " + "customers " + "for " + "exemption " + "purposes. " + "It " + "is " + "a " + "custom " + "value " + "that " + "links " + "customers " + "to " + "a " + "tax " + "rule. " + "Select " + "from " + "Avalara " + "[standard " + "codes][1] " + "or " + "enter " + "a " + "custom " + "code. " + "Max-length " + "[25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item. " + "Provides " + "additional " + "information " + "about " + "the " + "product " + "or " + "service " + "being " + "credited. " + "Displayed " + "on " + "the " + "credit " + "note " + "document.", + "example": "prorated amount for items", + "type": "string", + }, + "discount": { + "description": "Enter discount percentage.", + "example": 10, + "format": "double", + "type": "number", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_custom_fields": { + "description": "Enter custom field information", + "items": {"type": "string"}, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "item " + "in " + "the " + "line " + "item. " + "Retrieve " + "item " + "IDs " + "from " + "the " + "List " + "Items " + "API " + "endpoint " + "in " + "the " + "items " + "section. " + "Links " + "the " + "line " + "item " + "to " + "a " + "specific " + "product " + "or " + "service.", + "example": "90300000081501", + "type": "string", + }, + "item_order": { + "description": "Enter order of the item", + "example": 0, + "type": "integer", + }, + "line_item_id": { + "description": "Search credit notes by credit note line item id.", + "example": 903000006245, + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "associated " + "with " + "the " + "line " + "item. " + "Retrieve " + "location " + "IDs " + "from " + "the " + "List " + "Locations " + "API " + "endpoint " + "in " + "the " + "locations " + "section. " + "Determines " + "tax " + "settings " + "and " + "business " + "rules " + "for " + "this " + "line " + "item.", + "example": "460000000038080", + "type": "string", + }, + "location_name": {"description": "Name of the location.", "type": "string"}, + "name": { + "description": "Name " + "or " + "title " + "of " + "the " + "line " + "item. " + "Describes " + "the " + "product " + "or " + "service " + "being " + "credited. " + "This " + "name " + "is " + "displayed " + "on " + "the " + "credit " + "note " + "document.", + "example": "Basic Monthly", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "product " + "or " + "service " + "for " + "the " + "line " + "item. " + "Standard " + "values: " + "goods " + "or " + "services. " + "For " + "South " + "Africa: " + "service, " + "goods, " + "capital_service, " + "and " + "capital_goods.", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "Unique " + "identifier " + "for " + "the " + "project " + "associated " + "with " + "the " + "line " + "item. " + "Links " + "the " + "credit " + "to " + "a " + "specific " + "project " + "for " + "project-based " + "accounting " + "and " + "reporting.", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "being " + "credited " + "for " + "this " + "line " + "item. " + "Must " + "be " + "a " + "positive " + "number. " + "Used " + "to " + "calculate " + "the " + "total " + "amount " + "for " + "the " + "line " + "item.", + "example": 1, + "format": "int32", + "type": "integer", + }, + "rate": { + "description": "Rate of the line item.", + "example": 0, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "serial_numbers": { + "description": "Serial " + "numbers " + "of " + "the " + "items " + "being " + "credited. " + "Used " + "for " + "tracking " + "specific " + "units " + "of " + "inventory " + "or " + "equipment. " + "Important " + "for " + "warranty " + "and " + "return " + "tracking.", + "type": "string", + }, + "tax_exemption_code": { + "description": "Unique code of the tax exemption.", + "example": "GST FREE", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "for " + "the " + "tax " + "applied " + "to " + "the " + "line " + "item. " + "Retrieve " + "tax " + "IDs " + "from " + "the " + "List " + "Taxes " + "API " + "endpoint " + "in " + "the " + "taxes " + "section. " + "Determines " + "tax " + "calculations " + "for " + "this " + "specific " + "line " + "item.", + "example": "903000000000356", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "Unique " + "ID " + "to " + "denote " + "the " + "TDS " + "tax " + "associated " + "to " + "the " + "creditnote", + "example": "903000000000357", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit of the line item. E.g: kgs, Nos.", + "example": "kgs", + "type": "string", + }, + "unitkey_code": { + "description": "Add " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "box", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location associated with the line " + "item. Retrieve location IDs from the " + "List Locations API endpoint in the " + "locations section. Determines tax " + "settings and business rules for this " + "line item.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name or title of the line item. Describes the " + "product or service being credited. This name " + "is displayed on the credit note document.", + "example": "Basic Monthly", + "type": "string", + }, + "notes": { + "description": "Additional notes or comments for the credit " + "note. Displayed on the credit note document " + "for customer reference. Max-length [5000]", + "example": "Offer for the referral", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "quantity": { + "description": "Number of units being credited for this " + "line item. Must be a positive number. " + "Used to calculate the total amount for " + "the line item.", + "example": 1, + "format": "int32", + "type": "integer", + }, + "rate": { + "description": "Rate of the line item.", + "example": 0, + "format": "double", + "type": "number", + }, + "reference_number": { + "description": "Optional reference number for " + "tracking purposes. Can be any " + "custom string or auto-generated. " + "Useful for linking to external " + "systems or internal tracking. " + "Max-Length [100]", + "example": "INV-384", + "type": "string", + }, + "tax_authority_id": { + "description": "Unique ID of the tax authority. " + "Tax authority depends on the " + "location of the customer. For " + "example, if the customer is " + "located in NY, then the tax " + "authority is NY tax authority.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier for the tax applied to " + "the line item. Retrieve tax IDs from the " + "List Taxes API endpoint in the taxes " + "section. Determines tax calculations for " + "this specific line item.", + "example": "903000000000356", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the credit note " + ".Choose whether the contact falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier for the credit note " + "PDF template. Retrieve template IDs " + "from the List Credit Note Templates " + "API endpoint. Determines the visual " + "layout and branding of the credit note " + "document.", + "example": "90300000001336", + "type": "string", + }, + "terms": { + "description": "Terms and conditions displayed on the credit " + "note document. Include payment terms, return " + "policies, or other business conditions. " + "Max-length [10000]", + "example": "", + "type": "string", + }, + "unit": { + "description": "Unit of the line item. E.g: kgs, Nos.", + "example": "kgs", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "invoices. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "overseas", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["customer_id", "date", "creditnote_number", "line_items"], + "type": "object", + }, + "EMAILCREDITNOTE_REQUEST_BODY_SCHEMA": { + "properties": { + "body": { + "description": "The body of the email. Max-length [5000]", + "example": "Please find attached the credit note for your subscription.", + "type": "string", + }, + "cc_mail_ids": { + "description": "The email IDs that have to be copied " + "when the credit note is to be mailed.", + "example": ["accounts@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + "subject": { + "description": "The subject of the email. Max-length [1000]", + "example": "Credit note for subscription.", + "type": "string", + }, + "to_mail_ids": { + "description": "The email IDs to which the credit note is to be mailed.", + "example": ["benjamin.george@bowmanfurniture.com", "paul@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids", "subject", "body"], + "type": "object", + }, + "UPDATECREDITNOTEBILLINGADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Billing address for the invoice", + "example": "4900 Hopyard Rd, Suite 310", + "type": "string", + }, + "city": { + "description": "City of the customer's billing address.", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country of the customer's billing address.", + "example": "USA", + "type": "string", + }, + "fax": { + "description": "Customer's fax number.", + "example": "+1-925-924-9600", + "type": "string", + }, + "state": { + "description": "State of the customer's billing address.", + "example": "CA", + "type": "string", + }, + "zip": { + "description": "Zip code of the customer's billing address.", + "example": 94588, + "type": "string", + }, + }, + "type": "object", + }, + "UPDATECREDITNOTESHIPPINGADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Billing address for the invoice", + "example": "Suite 125, McMillan Avenue", + "type": "string", + }, + "city": { + "description": "City of the customer's billing address.", + "example": "San Francisco", + "type": "string", + }, + "country": { + "description": "Country of the customer's billing address.", + "example": "USA", + "type": "string", + }, + "fax": { + "description": "Customer's fax number.", + "example": "+1-925-924-9600", + "type": "string", + }, + "state": { + "description": "State of the customer's billing address.", + "example": "CA", + "type": "string", + }, + "zip": { + "description": "Zip code of the customer's billing address.", + "example": 94134, + "type": "string", + }, + }, + "type": "object", + }, + "APPLYCREDITNOTETOINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "amount_applied": { + "description": "The total amount applied form the credit note on an invoice.", + "example": 41.82, + "format": "double", + "type": "number", + }, + "invoice_id": { + "description": "Invoice ID of the required invoice.", + "example": "90300000079426", + "type": "string", + }, + "invoices": { + "description": "List of invoices for which the credit " + "note has been raised. This contains " + "invoice_id and " + "amount.", + "items": { + "properties": { + "amount_applied": { + "description": "The " + "total " + "amount " + "applied " + "form " + "the " + "credit " + "note " + "on " + "an " + "invoice.", + "example": 41.82, + "format": "double", + "type": "number", + }, + "invoice_id": { + "description": "Invoice ID of the required invoice.", + "example": "90300000079426", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "required": ["invoice_id", "amount_applied"], + "type": "object", + }, + "ADDCREDITNOTECOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "A small description about the item.", + "example": "Credits applied to invoice INV-00004", + "type": "string", + } + }, + "type": "object", + }, + "REFUNDCREDITNOTE_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount paid for the invoice.", + "example": 450, + "format": "double", + "type": "number", + }, + "date": { + "description": "The date on which the credit note is raised. " + "Must be in yyyy-mm-dd format. This date " + "determines the accounting period and affects " + "tax calculations.", + "example": "2016-06-05", + "type": "string", + }, + "description": { + "description": "Detailed description of the line item. " + "Provides additional information about " + "the product or service being credited. " + "Displayed on the credit note document.", + "example": "prorated amount for items", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for converting the " + "credit note currency to base " + "currency. Required when currency " + "differs from base currency. Retrieve " + "rates from currency exchange rate " + "APIs.", + "example": "5.5", + "type": "string", + }, + "from_account_id": { + "description": "The account from which credit note is refunded.", + "example": " ", + "type": "string", + }, + "payment_form": { + "description": "Mode of Vendor Payment", + "example": "cash", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "Optional reference number for " + "tracking purposes. Can be any " + "custom string or auto-generated. " + "Useful for linking to external " + "systems or internal tracking. " + "Max-Length [100]", + "example": "INV-384", + "type": "string", + }, + "refund_mode": { + "description": "The method of refund.", + "example": "cash", + "type": "string", + }, + }, + "type": "object", + }, + "UPDATEREFUNDTRANSACTION_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount paid for the invoice.", + "example": 450, + "format": "double", + "type": "number", + }, + "date": { + "description": "The date on which the credit note is raised. " + "Must be in yyyy-mm-dd format. This date " + "determines the accounting period and affects " + "tax calculations.", + "example": "2016-06-05", + "type": "string", + }, + "description": { + "description": "Detailed description of the line item. " + "Provides additional information about " + "the product or service being credited. " + "Displayed on the credit note document.", + "example": "prorated amount for items", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for converting the " + "credit note currency to base " + "currency. Required when currency " + "differs from base currency. Retrieve " + "rates from currency exchange rate " + "APIs.", + "example": "5.5", + "type": "string", + }, + "from_account_id": { + "description": "The account from which credit note is refunded.", + "example": " ", + "type": "string", + }, + "payment_form": { + "description": "Mode of Vendor Payment", + "example": "cash", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "Optional reference number for " + "tracking purposes. Can be any " + "custom string or auto-generated. " + "Useful for linking to external " + "systems or internal tracking. " + "Max-Length [100]", + "example": "INV-384", + "type": "string", + }, + "refund_mode": { + "description": "The method of refund.", + "example": "cash", + "type": "string", + }, + }, + "type": "object", + }, + "CREATECURRENCY_REQUEST_BODY_SCHEMA": { + "properties": { + "currency_code": { + "description": "A unique standard code for the currency. Max-len [100]", + "example": "AUD", + "type": "string", + }, + "currency_format": { + "description": "The format for the currency to be displayed. Max-len [100]", + "example": "1,234,567.89", + "type": "string", + }, + "currency_symbol": { + "description": "A unique symbol for the currency. Max-len [4]", + "example": "$", + "type": "string", + }, + "price_precision": { + "description": "The precision for the price", + "example": 2, + "type": "integer", + }, + }, + "required": ["currency_code", "currency_format"], + "type": "object", + }, + "UPDATECURRENCYDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "currency_code": { + "description": "A unique standard code for the currency. Max-len [100]", + "example": "AUD", + "type": "string", + }, + "currency_format": { + "description": "The format for the currency to be displayed. Max-len [100]", + "example": "1,234,567.89", + "type": "string", + }, + "currency_symbol": { + "description": "A unique symbol for the currency. Max-len [4]", + "example": "$", + "type": "string", + }, + "price_precision": { + "description": "The precision for the price", + "example": 2, + "type": "integer", + }, + }, + "required": ["currency_code", "currency_format"], + "type": "object", + }, + "CREATEEXCHANGERATE_REQUEST_BODY_SCHEMA": { + "properties": { + "effective_date": { + "description": "Date which the exchange rate is applicable for the currency.", + "example": "2013-09-04", + "type": "string", + }, + "rate": { + "description": "Rate of exchange for the currency with respect to base currency.", + "example": 1.23, + "format": "double", + "type": "number", + }, + }, + "type": "object", + }, + "UPDATEEXCHANGERATE_REQUEST_BODY_SCHEMA": { + "properties": { + "effective_date": { + "description": "Date which the exchange rate is applicable for the currency.", + "example": "2013-09-04", + "type": "string", + }, + "rate": { + "description": "Rate of exchange for the currency with respect to base currency.", + "example": 1.23, + "format": "double", + "type": "number", + }, + }, + "type": "object", + }, + "UPDATECUSTOMMODULERECORDS_REQUEST_BODY_SCHEMA": { + "properties": { + "cf_debt_amount": { + "description": "Value of the custom Field", + "example": 10000, + "type": "number", + }, + "module_record_id": { + "description": "Reeccord IDs", + "example": "460000000639128,460000000639129", + "type": "string", + }, + "record_name": { + "description": "Name of the record", + "example": "Alice", + "type": "string", + }, + }, + "required": ["record_name"], + "type": "object", + }, + "CREATECUSTOMMODULE_REQUEST_BODY_SCHEMA": { + "properties": { + "cf_debt_amount": { + "description": "Value of the custom Field", + "example": 10000, + "type": "number", + }, + "record_name": { + "description": "Name of the record", + "example": "Alice", + "type": "string", + }, + }, + "required": ["record_name"], + "type": "object", + }, + "UPDATECUSTOMMODULERECORD_REQUEST_BODY_SCHEMA": { + "properties": { + "cf_debt_amount": { + "description": "Value of the custom Field", + "example": 10000, + "type": "number", + }, + "record_name": { + "description": "Name of the record", + "example": "Alice", + "type": "string", + }, + }, + "required": ["record_name"], + "type": "object", + }, + "CREATECUSTOMERDEBITNOTE_REQUEST_BODY_SCHEMA": { + "properties": { + "contact_persons": { + "description": "List of contact person IDs", + "items": {"type": "string"}, + "type": "array", + }, + "currency_id": { + "description": "Unique identifier for the currency", + "example": "982000000000001", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "customfield_id": {"type": "string"}, + "value": {"type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Unique identifier for the customer", + "example": "982000000567001", + "type": "string", + }, + "date": {"description": "Debit note date", "example": "2013-11-17", "type": "string"}, + "due_date": {"description": "Due date", "example": "2013-12-02", "type": "string"}, + "exchange_rate": {"description": "Exchange rate", "example": 1, "type": "number"}, + "invoice_number": { + "description": "Debit note number", + "example": "DN-00001", + "type": "string", + }, + "line_items": { + "items": { + "properties": { + "description": { + "description": "Description", + "example": "Desktop Units", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN or SAC code", + "example": "80540", + "type": "string", + }, + "item_id": { + "description": "Item ID", + "example": "982000000030049", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "quantity": {"description": "Quantity", "example": 2, "type": "number"}, + "rate": {"description": "Rate", "example": 20, "type": "number"}, + "tax_id": { + "description": "Tax ID", + "example": "982000000567104", + "type": "string", + }, + }, + "required": ["item_id"], + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "payment_terms": { + "description": "Payment terms in days", + "example": 15, + "type": "integer", + }, + "payment_terms_label": { + "description": "Payment terms label", + "example": "Net 15", + "type": "string", + }, + "reference_invoice_id": { + "description": "Invoice ID", + "example": "982000000567005", + "type": "string", + }, + "reference_invoice_type": { + "description": "Invoice type description", + "example": "registered", + "type": "string", + }, + "type": { + "description": "Type of the document. For customer debit " + "notes, this should be debit_note", + "enum": ["debit_note"], + "example": "debit_note", + "type": "string", + }, + }, + "required": ["customer_id", "line_items", "type", "reference_invoice_id"], + "type": "object", + }, + "UPDATECUSTOMERDEBITNOTE_REQUEST_BODY_SCHEMA": { + "properties": { + "currency_id": { + "description": "Unique identifier for the currency", + "example": "982000000000001", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "customfield_id": {"type": "string"}, + "value": {"type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Unique identifier for the customer", + "example": "982000000567001", + "type": "string", + }, + "date": {"description": "Debit note date", "example": "2013-11-17", "type": "string"}, + "discount": {"description": "Discount amount", "example": 0, "type": "number"}, + "due_date": {"description": "Due date", "example": "2013-12-02", "type": "string"}, + "exchange_rate": {"description": "Exchange rate", "example": 1, "type": "number"}, + "invoice_number": { + "description": "Debit note number", + "example": "DN-00001", + "type": "string", + }, + "line_items": { + "items": { + "properties": { + "description": { + "description": "Description", + "example": "Desktop Units", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN or SAC code", + "example": "80540", + "type": "string", + }, + "item_id": { + "description": "Item ID", + "example": "982000000030049", + "type": "string", + }, + "item_total": { + "description": "Item total", + "example": 40, + "type": "number", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "product_type": { + "description": "Product type", + "example": "goods", + "type": "string", + }, + "quantity": {"description": "Quantity", "example": 2, "type": "number"}, + "rate": {"description": "Rate", "example": 20, "type": "number"}, + "tax_id": { + "description": "Tax ID", + "example": "982000000567104", + "type": "string", + }, + "unit": {"description": "Unit", "example": "Nos", "type": "string"}, + }, + "required": ["item_id"], + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "payment_terms": { + "description": "Payment terms in days", + "example": 15, + "type": "integer", + }, + "payment_terms_label": { + "description": "Payment terms label", + "example": "Net 15", + "type": "string", + }, + "template_id": { + "description": "Template ID", + "example": "982000000000143", + "type": "string", + }, + "type": { + "description": "Type of the document. For customer debit " + "notes, this should be debit_note", + "enum": ["debit_note"], + "example": "debit_note", + "type": "string", + }, + }, + "required": ["customer_id", "line_items"], + "type": "object", + }, + "CREATECUSTOMERPAYMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the cash/bank account the payment has to be deposited.", + "example": " ", + "type": "string", + }, + "amount": { + "description": "Amount paid in the respective payment.", + "example": 450, + "format": "double", + "type": "number", + }, + "amount_applied": { + "description": "Amount paid for the invoice.", + "example": 450, + "format": "double", + "type": "number", + }, + "bank_charges": { + "description": "Denotes any additional bank charges.", + "example": 10, + "format": "double", + "type": "number", + }, + "contact_persons": { + "description": "IDs of the contact personsthe thank you mail has to be triggered.", + "example": ["982000000870911", "982000000870915"], + "items": {"type": "string"}, + "type": "array", + }, + "custom_fields": { + "description": "Additional fields for the payments.", + "items": { + "properties": { + "label": { + "description": "Label of the custom field.", + "example": "label", + "type": "string", + }, + "value": { + "description": "Value of the custom field.", + "example": 129890, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Customer ID of the customer involved in the payment.", + "example": "903000000000099", + "type": "string", + }, + "date": { + "description": "Date on which payment is made. Format [yyyy-mm-dd]", + "example": "2016-06-05", + "type": "string", + }, + "description": { + "description": "Description about the payment.", + "example": "Payment has been added to INV-384", + "type": "string", + }, + "exchange_rate": { + "default": 1, + "description": "Exchange rate for the currency used " + "in the invoices and customer's " + "currency. The payment amount would " + "be the multiplicative product of the " + "original amount and the exchange " + "rate.", + "example": 1, + "format": "double", + "type": "number", + }, + "invoice_id": { + "description": "Invoice ID of the required invoice.", + "example": "90300000079426", + "type": "string", + }, + "invoices": { + "description": "List of invoices associated with the " + "payment. Each invoice object contains " + "invoice_id, " + "invoice_number, " + "date, " + "invoice_amount, " + "amount_applied and " + "balance_amount.", + "items": { + "properties": { + "amount_applied": { + "description": "Amount paid for the invoice.", + "example": 450, + "format": "double", + "type": "number", + }, + "invoice_id": { + "description": "Invoice ID of the required invoice.", + "example": "90300000079426", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "payment_form": { + "description": "Mode of Vendor Payment", + "example": "cash", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "payment_mode": { + "description": "Mode through which payment is made. " + "This can be check, " + "cash, " + "creditcard, " + "banktransfer, " + "bankremittance, " + "autotransaction or " + "others. Max-length [100]", + "example": "cash", + "type": "string", + }, + "reference_number": { + "description": "Reference number generated for " + "the payment. A string of your " + "choice can also be used as the " + "reference number. Max-length " + "[100]", + "example": "INV-384", + "type": "string", + }, + "retainerinvoice_id": { + "description": "ID of the retainer invoice associated with the payment", + "example": "982000000567114", + "type": "string", + }, + "tax_amount_withheld": { + "description": "Amount withheld for tax.", + "example": 0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "customer_id", + "payment_mode", + "amount", + "invoices", + "date", + "invoice_id", + "amount_applied", + ], + "type": "object", + }, + "UPDATEPAYMENTBYCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the cash/bank account the payment has to be deposited.", + "example": " ", + "type": "string", + }, + "amount": { + "description": "Amount paid in the respective payment.", + "example": 450, + "format": "double", + "type": "number", + }, + "amount_applied": { + "description": "Amount paid for the invoice.", + "example": 450, + "format": "double", + "type": "number", + }, + "bank_charges": { + "description": "Denotes any additional bank charges.", + "example": 10, + "format": "double", + "type": "number", + }, + "custom_fields": { + "description": "Additional fields for the payments.", + "items": { + "properties": { + "label": { + "description": "Label of the custom field.", + "example": "label", + "type": "string", + }, + "value": { + "description": "Value of the custom field.", + "example": 129890, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Customer ID of the customer involved in the payment.", + "example": "903000000000099", + "type": "string", + }, + "date": { + "description": "Date on which payment is made. Format [yyyy-mm-dd]", + "example": "2016-06-05", + "type": "string", + }, + "description": { + "description": "Description about the payment.", + "example": "Payment has been added to INV-384", + "type": "string", + }, + "exchange_rate": { + "default": 1, + "description": "Exchange rate for the currency used " + "in the invoices and customer's " + "currency. The payment amount would " + "be the multiplicative product of the " + "original amount and the exchange " + "rate.", + "example": 1, + "format": "double", + "type": "number", + }, + "invoice_id": { + "description": "Invoice ID of the required invoice.", + "example": "90300000079426", + "type": "string", + }, + "invoices": { + "description": "List of invoices associated with the " + "payment. Each invoice object contains " + "invoice_id, " + "invoice_number, " + "date, " + "invoice_amount, " + "amount_applied and " + "balance_amount.", + "items": { + "properties": { + "amount_applied": { + "description": "Amount paid for the invoice.", + "example": 450, + "format": "double", + "type": "number", + }, + "invoice_id": { + "description": "Invoice ID of the required invoice.", + "example": "90300000079426", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "payment_form": { + "description": "Mode of Vendor Payment", + "example": "cash", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "payment_mode": { + "description": "Mode through which payment is made. " + "This can be check, " + "cash, " + "creditcard, " + "banktransfer, " + "bankremittance, " + "autotransaction or " + "others. Max-length [100]", + "example": "cash", + "type": "string", + }, + "reference_number": { + "description": "Reference number generated for " + "the payment. A string of your " + "choice can also be used as the " + "reference number. Max-length " + "[100]", + "example": "INV-384", + "type": "string", + }, + "retainerinvoice_id": { + "description": "ID of the retainer invoice associated with the payment", + "example": "982000000567114", + "type": "string", + }, + "tax_amount_withheld": { + "description": "Amount withheld for tax.", + "example": 0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "customer_id", + "payment_mode", + "amount", + "invoices", + "invoice_id", + "amount_applied", + ], + "type": "object", + }, + "UPDATECUSTOMERPAYMENTINFO_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the cash/bank account the payment has to be deposited.", + "example": " ", + "type": "string", + }, + "amount": { + "description": "Amount paid in the respective payment.", + "example": 450, + "format": "double", + "type": "number", + }, + "amount_applied": { + "description": "Amount paid for the invoice.", + "example": 450, + "format": "double", + "type": "number", + }, + "bank_charges": { + "description": "Denotes any additional bank charges.", + "example": 10, + "format": "double", + "type": "number", + }, + "custom_fields": { + "description": "Additional fields for the payments.", + "items": { + "properties": { + "label": { + "description": "Label of the custom field.", + "example": "label", + "type": "string", + }, + "value": { + "description": "Value of the custom field.", + "example": 129890, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Customer ID of the customer involved in the payment.", + "example": "903000000000099", + "type": "string", + }, + "date": { + "description": "Date on which payment is made. Format [yyyy-mm-dd]", + "example": "2016-06-05", + "type": "string", + }, + "description": { + "description": "Description about the payment.", + "example": "Payment has been added to INV-384", + "type": "string", + }, + "exchange_rate": { + "default": 1, + "description": "Exchange rate for the currency used " + "in the invoices and customer's " + "currency. The payment amount would " + "be the multiplicative product of the " + "original amount and the exchange " + "rate.", + "example": 1, + "format": "double", + "type": "number", + }, + "invoice_id": { + "description": "Invoice ID of the required invoice.", + "example": "90300000079426", + "type": "string", + }, + "invoices": { + "description": "List of invoices associated with the " + "payment. Each invoice object contains " + "invoice_id, " + "invoice_number, " + "date, " + "invoice_amount, " + "amount_applied and " + "balance_amount.", + "items": { + "properties": { + "amount_applied": { + "description": "Amount paid for the invoice.", + "example": 450, + "format": "double", + "type": "number", + }, + "invoice_id": { + "description": "Invoice ID of the required invoice.", + "example": "90300000079426", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "payment_form": { + "description": "Mode of Vendor Payment", + "example": "cash", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "payment_mode": { + "description": "Mode through which payment is made. " + "This can be check, " + "cash, " + "creditcard, " + "banktransfer, " + "bankremittance, " + "autotransaction or " + "others. Max-length [100]", + "example": "cash", + "type": "string", + }, + "reference_number": { + "description": "Reference number generated for " + "the payment. A string of your " + "choice can also be used as the " + "reference number. Max-length " + "[100]", + "example": "INV-384", + "type": "string", + }, + "retainerinvoice_id": { + "description": "ID of the retainer invoice associated with the payment", + "example": "982000000567114", + "type": "string", + }, + "tax_amount_withheld": { + "description": "Amount withheld for tax.", + "example": 0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "customer_id", + "payment_mode", + "amount", + "invoices", + "invoice_id", + "amount_applied", + ], + "type": "object", + }, + "REFUNDEXCESSPAYMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount paid in the respective payment.", + "example": 450, + "format": "double", + "type": "number", + }, + "date": { + "description": "Date on which payment is made. Format [yyyy-mm-dd]", + "example": "2016-06-05", + "type": "string", + }, + "description": { + "description": "Description about the payment.", + "example": "Payment has been added to INV-384", + "type": "string", + }, + "exchange_rate": { + "default": 1, + "description": "Exchange rate for the currency used " + "in the invoices and customer's " + "currency. The payment amount would " + "be the multiplicative product of the " + "original amount and the exchange " + "rate.", + "example": 1, + "format": "double", + "type": "number", + }, + "from_account_id": { + "description": "The account from which payment is refunded.", + "example": " ", + "type": "string", + }, + "payment_form": { + "description": "Mode of Vendor Payment", + "example": "cash", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "Reference number generated for " + "the payment. A string of your " + "choice can also be used as the " + "reference number. Max-length " + "[100]", + "example": "INV-384", + "type": "string", + }, + "refund_mode": { + "description": "The method of refund. Max-length [50]", + "example": "cash", + "type": "string", + }, + }, + "required": ["date", "amount", "from_account_id"], + "type": "object", + }, + "UPDATECUSTOMERPAYMENTCUSTOMFIELDS_REQUEST_BODY_SCHEMA": { + "description": "Custom fields for an invoice.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the custom field.", + "example": 129890, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "UPDATEPAYMENTREFUND_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Amount paid in the respective payment.", + "example": 450, + "format": "double", + "type": "number", + }, + "date": { + "description": "Date on which payment is made. Format [yyyy-mm-dd]", + "example": "2016-06-05", + "type": "string", + }, + "description": { + "description": "Description about the payment.", + "example": "Payment has been added to INV-384", + "type": "string", + }, + "exchange_rate": { + "default": 1, + "description": "Exchange rate for the currency used " + "in the invoices and customer's " + "currency. The payment amount would " + "be the multiplicative product of the " + "original amount and the exchange " + "rate.", + "example": 1, + "format": "double", + "type": "number", + }, + "from_account_id": { + "description": "The account from which payment is refunded.", + "example": " ", + "type": "string", + }, + "payment_form": { + "description": "Mode of Vendor Payment", + "example": "cash", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "Reference number generated for " + "the payment. A string of your " + "choice can also be used as the " + "reference number. Max-length " + "[100]", + "example": "INV-384", + "type": "string", + }, + "refund_mode": { + "description": "The method of refund. Max-length [50]", + "example": "cash", + "type": "string", + }, + }, + "required": ["date", "amount", "from_account_id"], + "type": "object", + }, + "CREATECUSTOMERESTIMATE_REQUEST_BODY_SCHEMA": { + "properties": { + "accept_retainer": { + "description": "Boolean flag indicating whether a " + "retainer invoice should be " + "automatically created if the " + "customer accepts this estimate. " + "When set to true, a " + "retainer invoice is generated upon " + "acceptance, streamlining the " + "process for upfront payments or " + "deposits. Allowed values: " + "true and " + "false.", + "example": True, + "type": "boolean", + }, + "adjustment": { + "description": "Additional charge or credit amount " + "applied to the estimate total. This can " + "be used for rounding adjustments, " + "handling fees, or any other one-time " + "charges/credits. Positive values add to " + "the total, negative values reduce the " + "total. This amount is applied after tax " + "calculation and affects the final " + "estimate total.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Text description explaining " + "the reason for the " + "adjustment amount. This " + "description appears on the " + "estimate document to " + "explain why the adjustment " + "was applied. Common " + 'examples include "Rounding ' + 'adjustment", "Handling ' + 'fee", "Early payment ' + 'discount", or "Late payment ' + 'fee". This helps customers ' + "understand the purpose of " + "the adjustment.", + "example": " ", + "type": "string", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the estimate.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "currency_id": { + "description": "The ID of the currency in which the " + "estimate will be created. Use this to " + "specify the customer's preferred " + "currency for transactions. Fetch valid " + "currency IDs using the Currency API " + "(GET /currencies).", + "example": 982000000000190, + "type": "string", + }, + "custom_body": {"example": " ", "type": "string"}, + "custom_fields": { + "description": "Custom fields for an estimate.", + "items": { + "properties": { + "index": {"example": 1, "type": "integer"}, + "value": {"example": "15 Dec 2013", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "custom_subject": {"example": " ", "type": "string"}, + "customer_id": { + "description": "The ID of the customer (contact) for " + "whom the estimate is created. This " + "must be a valid contact ID from your " + "organization; obtain it using the " + "Contacts API (GET /contacts) or the " + "Create Contact response.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "Search estimates by estimate date.Variants " + "date_start, " + "date_end, " + "date_before and " + "date_after", + "example": "2013-11-18", + "type": "string", + }, + "description": { + "description": "Detailed description of the product or " + "service in this line item. Use this " + "field to provide specifications, " + "features, or any other relevant " + "information that helps the customer " + "understand about the line item.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount applied to the estimate. It can " + "be either in % or in amount. e.g. 12.5% " + "or 190.", + "example": 0, + "format": "double", + "type": "number", + }, + "discount_type": { + "description": "How the discount is specified. " + "Allowed values are entity_level or " + "item_level.Allowed Values: " + "entity_level and " + "item_level", + "example": "item_level", + "type": "string", + }, + "estimate_number": { + "description": "Search estimates by estimate " + "number.Variantsestimate_number_startswith " + "and " + "estimate_number_contains", + "example": "EST-00002", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate of the currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "expiry_date": { + "description": "The date of expiration of the estimates", + "example": "2013-11-30", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Used to specify how the " + "discount has to applied. " + "Either before or after the " + "calculation of tax.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique identifier of the item (product or " + "service) being quoted in this line item. " + "Use the `item_id` returned by the Items " + "API for the same organization. This links " + "the line item to a specific product or " + "service in your catalog.", + "example": " ", + "type": "string", + }, + "line_item_id": { + "description": "Unique identifier of the line item " + "within the estimate. Required when " + "updating or referencing a specific " + "line item. If omitted during " + "creation, a new line item will be " + "added.", + "example": 982000000567021, + "type": "string", + }, + "line_items": { + "description": "Line items of an estimate.", + "items": { + "properties": { + "bcy_rate": { + "description": "Exchange " + "rate " + "between " + "the " + "base " + "currency " + "and " + "the " + "transaction " + "currency " + "for " + "this " + "line " + "item. " + "Used " + "for " + "currency " + "conversion " + "and " + "reporting.", + "example": 120, + "format": "float", + "type": "number", + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "product " + "or " + "service " + "in " + "this " + "line " + "item. " + "Use " + "this " + "field " + "to " + "provide " + "specifications, " + "features, " + "or " + "any " + "other " + "relevant " + "information " + "that " + "helps " + "the " + "customer " + "understand " + "about " + "the " + "line " + "item.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount " + "applied " + "to " + "the " + "estimate. " + "It " + "can " + "be " + "either " + "in " + "% " + "or " + "in " + "amount. " + "e.g. " + "12.5% " + "or " + "190.", + "example": 0, + "format": "double", + "type": "number", + }, + "discount_amount": { + "description": "Discount " + "amount " + "applied " + "to " + "this " + "line " + "item. " + "This " + "value " + "reduces " + "the " + "line " + "item " + "total " + "before " + "tax " + "calculation.", + "example": 0, + "format": "float", + "type": "number", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "item " + "(product " + "or " + "service) " + "being " + "quoted " + "in " + "this " + "line " + "item. " + "Use " + "the " + "`item_id` " + "returned " + "by " + "the " + "Items " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "line " + "item " + "to " + "a " + "specific " + "product " + "or " + "service " + "in " + "your " + "catalog.", + "example": " ", + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "number " + "for " + "this " + "line " + "item " + "on " + "the " + "estimate. " + "Determines " + "the " + "display " + "order " + "of " + "line " + "items " + "in " + "the " + "estimate " + "document " + "— " + "lower " + "values " + "appear " + "first. " + "Use " + "this " + "field " + "to " + "organize " + "line " + "items " + "in " + "a " + "specific " + "sequence.", + "example": 1, + "type": "integer", + }, + "item_total": { + "description": "Total " + "amount " + "for " + "this " + "line " + "item " + "after " + "applying " + "quantity, " + "rate, " + "discounts, " + "and " + "taxes. " + "This " + "value " + "contributes " + "to " + "the " + "overall " + "estimate " + "total.", + "example": 120, + "format": "float", + "type": "number", + }, + "line_item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "line " + "item " + "within " + "the " + "estimate. " + "Required " + "when " + "updating " + "or " + "referencing " + "a " + "specific " + "line " + "item. " + "If " + "omitted " + "during " + "creation, " + "a " + "new " + "line " + "item " + "will " + "be " + "added.", + "example": 982000000567021, + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "of " + "the " + "business " + "location " + "associated " + "with " + "the " + "estimate. " + "Use " + "the " + "`location_id` " + "returned " + "by " + "the " + "Locations " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "estimate " + "to " + "a " + "specific " + "business " + "location, " + "which " + "may " + "affect " + "tax " + "calculations, " + "reporting, " + "and " + "business " + "operations. " + "Required " + "if " + "your " + "organization " + "has " + "multiple " + "locations " + "configured.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "of " + "the " + "product " + "or " + "service " + "for " + "this " + "line " + "item. " + "This " + "is " + "displayed " + "on " + "the " + "estimate " + "document " + "and " + "helps " + "the " + "customer " + "identify " + "what " + "is " + "being " + "quoted.", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "product " + "or " + "service " + "for " + "this " + "line " + "item. " + "Allowed " + "values: " + "goods " + "or " + "services. " + "For " + "South " + "Africa " + "Edition, " + "additional " + "values " + "include " + "capital_service " + "and " + "capital_goods. " + "This " + "classification " + "affects " + "tax " + "calculations, " + "reporting, " + "and " + "compliance " + "requirements " + "based " + "on " + "your " + "organization's " + "location " + "and " + "tax " + "regulations.", + "example": "goods", + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "of " + "the " + "product " + "or " + "service " + "being " + "quoted " + "in " + "this " + "line " + "item. " + "This " + "value " + "is " + "multiplied " + "by " + "the " + "rate " + "to " + "calculate " + "the " + "line " + "item " + "total.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit " + "price " + "or " + "rate " + "for " + "the " + "product " + "or " + "service " + "in " + "this " + "line " + "item. " + "This " + "value " + "is " + "multiplied " + "by " + "the " + "quantity " + "to " + "determine " + "the " + "line " + "item " + "total " + "before " + "taxes " + "and " + "discounts.", + "example": 120, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "tax " + "to " + "be " + "applied " + "to " + "this " + "line " + "item. " + "Use " + "the " + "`tax_id` " + "returned " + "by " + "the " + "Taxes " + "API " + "for " + "the " + "same " + "organization. " + "This " + "determines " + "which " + "tax " + "rate " + "and " + "rules " + "are " + "applied " + "to " + "the " + "line " + "item, " + "affecting " + "the " + "final " + "tax " + "calculation " + "and " + "compliance " + "reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_name": { + "description": "The name of the tax", + "example": "VAT", + "type": "string", + }, + "tax_percentage": { + "description": "The percentage of tax levied", + "example": 12.5, + "format": "float", + "type": "number", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tax_type": { + "description": "The type of the tax", + "example": "tax", + "type": "string", + }, + "tds_tax_id": { + "description": "ID of the TDS tax.", + "example": "982000000557012", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "product " + "or " + "service " + "in " + "this " + "line " + "item " + "(e.g., " + "kgs, " + "Nos., " + "hours). " + "Helps " + "clarify " + "the " + "quantity " + "being " + "quoted.", + "example": " ", + "type": "string", + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "E48", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier of the business " + "location associated with the estimate. " + "Use the `location_id` returned by the " + "Locations API for the same " + "organization. This links the estimate " + "to a specific business location, which " + "may affect tax calculations, " + "reporting, and business operations. " + "Required if your organization has " + "multiple locations configured.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name of the product or service for this line " + "item. This is displayed on the estimate " + "document and helps the customer identify what " + "is being quoted.", + "example": "Hard Drive", + "type": "string", + }, + "notes": { + "description": "Additional information or comments to be " + "displayed on the estimate document. This " + "field is typically used for thank you " + "messages, special instructions, or any other " + "information you want to communicate to the " + "customer. The notes appear on the estimate " + "PDF and are visible to customers.", + "example": "Looking forward for your business.", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "project_id": { + "description": "Unique identifier of the project " + "associated with this estimate. Use the " + "project_id returned by the " + "Projects API for the same organization. " + "Linking an estimate to a project helps " + "with project-based billing, tracking, " + "and reporting.", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number of units of the product or service " + "being quoted in this line item. This " + "value is multiplied by the rate to " + "calculate the line item total.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit price or rate for the product or service " + "in this line item. This value is multiplied " + "by the quantity to determine the line item " + "total before taxes and discounts.", + "example": 120, + "format": "double", + "type": "number", + }, + "reference_number": { + "description": "Optional external identifier used " + "to associate the estimate with " + "other systems or workflows. Helps " + "improve traceability and " + "integration during estimate " + "creation.", + "example": "QRT-12346", + "type": "string", + }, + "retainer_percentage": { + "description": "Percentage of the estimate " + "amount to be collected as a " + "retainer (upfront payment) " + "when the estimate is accepted. " + "Specify a value between 0 and " + "100. This determines the " + "portion of the total estimate " + "that will be invoiced as a " + "retainer.", + "example": 10, + "type": "integer", + }, + "salesperson_name": { + "description": "Name of the sales person.", + "example": "Will smith", + "type": "string", + }, + "shipping_charge": { + "description": "Additional shipping or delivery " + "charges applied to the estimate. " + "Must be specified as a fixed " + 'amount (e.g., "25.00"). This ' + "amount is added to the estimate " + "total and is subject to tax " + "calculation.", + "example": 0, + "type": "string", + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": 11149000000061052, + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption.", + "example": 11149000000061054, + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier of the tax to be applied " + "to this line item. Use the `tax_id` " + "returned by the Taxes API for the same " + "organization. This determines which tax " + "rate and rules are applied to the line " + "item, affecting the final tax calculation " + "and compliance reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the Estimate. " + "Allowed Values: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "The ID of the template used for " + "generating the estimate PDF. Use this " + "to apply custom branding or formats. " + "Fetch template IDs using the Templates " + "API (GET /estimates/templates).", + "example": 982000000000143, + "type": "string", + }, + "terms": { + "description": "Defines the terms and conditions to be " + "included in the estimate document. This " + "field can be used to specify payment terms, " + "delivery schedules, return policies, or " + "other transactional details. The terms " + "appear on the estimate PDF and helps " + "communicate key conditions related to the " + "estimate.", + "example": "Terms & Conditions apply", + "type": "string", + }, + "unit": { + "description": "Unit of measurement for the product or " + "service in this line item (e.g., kgs, Nos., " + "hours). Helps clarify the quantity being " + "quoted.", + "example": " ", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "estimates. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["customer_id", "line_items"], + "type": "object", + }, + "UPDATEESTIMATEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "accept_retainer": { + "description": "Boolean flag indicating whether a " + "retainer invoice should be " + "automatically created if the " + "customer accepts this estimate. " + "When set to true, a " + "retainer invoice is generated upon " + "acceptance, streamlining the " + "process for upfront payments or " + "deposits. Allowed values: " + "true and " + "false.", + "example": True, + "type": "boolean", + }, + "adjustment": { + "description": "Additional charge or credit amount " + "applied to the estimate total. This can " + "be used for rounding adjustments, " + "handling fees, or any other one-time " + "charges/credits. Positive values add to " + "the total, negative values reduce the " + "total. This amount is applied after tax " + "calculation and affects the final " + "estimate total.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Text description explaining " + "the reason for the " + "adjustment amount. This " + "description appears on the " + "estimate document to " + "explain why the adjustment " + "was applied. Common " + 'examples include "Rounding ' + 'adjustment", "Handling ' + 'fee", "Early payment ' + 'discount", or "Late payment ' + 'fee". This helps customers ' + "understand the purpose of " + "the adjustment.", + "example": " ", + "type": "string", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the estimate.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "currency_id": { + "description": "The ID of the currency in which the " + "estimate will be created. Use this to " + "specify the customer's preferred " + "currency for transactions. Fetch valid " + "currency IDs using the Currency API " + "(GET /currencies).", + "example": 982000000000190, + "type": "string", + }, + "custom_body": {"example": " ", "type": "string"}, + "custom_fields": { + "description": "Custom fields for an estimate.", + "items": { + "properties": { + "index": {"example": 1, "type": "integer"}, + "value": {"example": "15 Dec 2013", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "custom_subject": {"example": " ", "type": "string"}, + "customer_id": { + "description": "The ID of the customer (contact) for " + "whom the estimate is created. This " + "must be a valid contact ID from your " + "organization; obtain it using the " + "Contacts API (GET /contacts) or the " + "Create Contact response.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "Search estimates by estimate date.Variants " + "date_start, " + "date_end, " + "date_before and " + "date_after", + "example": "2013-11-18", + "type": "string", + }, + "description": { + "description": "Detailed description of the product or " + "service in this line item. Use this " + "field to provide specifications, " + "features, or any other relevant " + "information that helps the customer " + "understand about the line item.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount applied to the estimate. It can " + "be either in % or in amount. e.g. 12.5% " + "or 190.", + "example": 0, + "format": "double", + "type": "number", + }, + "discount_type": { + "description": "How the discount is specified. " + "Allowed values are entity_level or " + "item_level.Allowed Values: " + "entity_level and " + "item_level", + "example": "item_level", + "type": "string", + }, + "estimate_number": { + "description": "Search estimates by estimate " + "number.Variantsestimate_number_startswith " + "and " + "estimate_number_contains", + "example": "EST-00002", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate of the currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "expiry_date": { + "description": "The date of expiration of the estimates", + "example": "2013-11-30", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Used to specify how the " + "discount has to applied. " + "Either before or after the " + "calculation of tax.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique identifier of the item (product or " + "service) being quoted in this line item. " + "Use the `item_id` returned by the Items " + "API for the same organization. This links " + "the line item to a specific product or " + "service in your catalog.", + "example": " ", + "type": "string", + }, + "line_item_id": { + "description": "Unique identifier of the line item " + "within the estimate. Required when " + "updating or referencing a specific " + "line item. If omitted during " + "creation, a new line item will be " + "added.", + "example": 982000000567021, + "type": "string", + }, + "line_items": { + "description": "Line items of an estimate.", + "items": { + "properties": { + "bcy_rate": { + "description": "Exchange " + "rate " + "between " + "the " + "base " + "currency " + "and " + "the " + "transaction " + "currency " + "for " + "this " + "line " + "item. " + "Used " + "for " + "currency " + "conversion " + "and " + "reporting.", + "example": 120, + "format": "float", + "type": "number", + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "product " + "or " + "service " + "in " + "this " + "line " + "item. " + "Use " + "this " + "field " + "to " + "provide " + "specifications, " + "features, " + "or " + "any " + "other " + "relevant " + "information " + "that " + "helps " + "the " + "customer " + "understand " + "about " + "the " + "line " + "item.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount " + "applied " + "to " + "the " + "estimate. " + "It " + "can " + "be " + "either " + "in " + "% " + "or " + "in " + "amount. " + "e.g. " + "12.5% " + "or " + "190.", + "example": 0, + "format": "double", + "type": "number", + }, + "discount_amount": { + "description": "Discount " + "amount " + "applied " + "to " + "this " + "line " + "item. " + "This " + "value " + "reduces " + "the " + "line " + "item " + "total " + "before " + "tax " + "calculation.", + "example": 0, + "format": "float", + "type": "number", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "item " + "(product " + "or " + "service) " + "being " + "quoted " + "in " + "this " + "line " + "item. " + "Use " + "the " + "`item_id` " + "returned " + "by " + "the " + "Items " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "line " + "item " + "to " + "a " + "specific " + "product " + "or " + "service " + "in " + "your " + "catalog.", + "example": " ", + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "number " + "for " + "this " + "line " + "item " + "on " + "the " + "estimate. " + "Determines " + "the " + "display " + "order " + "of " + "line " + "items " + "in " + "the " + "estimate " + "document " + "— " + "lower " + "values " + "appear " + "first. " + "Use " + "this " + "field " + "to " + "organize " + "line " + "items " + "in " + "a " + "specific " + "sequence.", + "example": 1, + "type": "integer", + }, + "item_total": { + "description": "Total " + "amount " + "for " + "this " + "line " + "item " + "after " + "applying " + "quantity, " + "rate, " + "discounts, " + "and " + "taxes. " + "This " + "value " + "contributes " + "to " + "the " + "overall " + "estimate " + "total.", + "example": 120, + "format": "float", + "type": "number", + }, + "line_item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "line " + "item " + "within " + "the " + "estimate. " + "Required " + "when " + "updating " + "or " + "referencing " + "a " + "specific " + "line " + "item. " + "If " + "omitted " + "during " + "creation, " + "a " + "new " + "line " + "item " + "will " + "be " + "added.", + "example": 982000000567021, + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "of " + "the " + "business " + "location " + "associated " + "with " + "the " + "estimate. " + "Use " + "the " + "`location_id` " + "returned " + "by " + "the " + "Locations " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "estimate " + "to " + "a " + "specific " + "business " + "location, " + "which " + "may " + "affect " + "tax " + "calculations, " + "reporting, " + "and " + "business " + "operations. " + "Required " + "if " + "your " + "organization " + "has " + "multiple " + "locations " + "configured.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "of " + "the " + "product " + "or " + "service " + "for " + "this " + "line " + "item. " + "This " + "is " + "displayed " + "on " + "the " + "estimate " + "document " + "and " + "helps " + "the " + "customer " + "identify " + "what " + "is " + "being " + "quoted.", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "product " + "or " + "service " + "for " + "this " + "line " + "item. " + "Allowed " + "values: " + "goods " + "or " + "services. " + "For " + "South " + "Africa " + "Edition, " + "additional " + "values " + "include " + "capital_service " + "and " + "capital_goods. " + "This " + "classification " + "affects " + "tax " + "calculations, " + "reporting, " + "and " + "compliance " + "requirements " + "based " + "on " + "your " + "organization's " + "location " + "and " + "tax " + "regulations.", + "example": "goods", + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "of " + "the " + "product " + "or " + "service " + "being " + "quoted " + "in " + "this " + "line " + "item. " + "This " + "value " + "is " + "multiplied " + "by " + "the " + "rate " + "to " + "calculate " + "the " + "line " + "item " + "total.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit " + "price " + "or " + "rate " + "for " + "the " + "product " + "or " + "service " + "in " + "this " + "line " + "item. " + "This " + "value " + "is " + "multiplied " + "by " + "the " + "quantity " + "to " + "determine " + "the " + "line " + "item " + "total " + "before " + "taxes " + "and " + "discounts.", + "example": 120, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "tax " + "to " + "be " + "applied " + "to " + "this " + "line " + "item. " + "Use " + "the " + "`tax_id` " + "returned " + "by " + "the " + "Taxes " + "API " + "for " + "the " + "same " + "organization. " + "This " + "determines " + "which " + "tax " + "rate " + "and " + "rules " + "are " + "applied " + "to " + "the " + "line " + "item, " + "affecting " + "the " + "final " + "tax " + "calculation " + "and " + "compliance " + "reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_name": { + "description": "The name of the tax", + "example": "VAT", + "type": "string", + }, + "tax_percentage": { + "description": "The percentage of tax levied", + "example": 12.5, + "format": "float", + "type": "number", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tax_type": { + "description": "The type of the tax", + "example": "tax", + "type": "string", + }, + "tds_tax_id": { + "description": "ID of the TDS tax.", + "example": "982000000557012", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "product " + "or " + "service " + "in " + "this " + "line " + "item " + "(e.g., " + "kgs, " + "Nos., " + "hours). " + "Helps " + "clarify " + "the " + "quantity " + "being " + "quoted.", + "example": " ", + "type": "string", + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "E48", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier of the business " + "location associated with the estimate. " + "Use the `location_id` returned by the " + "Locations API for the same " + "organization. This links the estimate " + "to a specific business location, which " + "may affect tax calculations, " + "reporting, and business operations. " + "Required if your organization has " + "multiple locations configured.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name of the product or service for this line " + "item. This is displayed on the estimate " + "document and helps the customer identify what " + "is being quoted.", + "example": "Hard Drive", + "type": "string", + }, + "notes": { + "description": "Additional information or comments to be " + "displayed on the estimate document. This " + "field is typically used for thank you " + "messages, special instructions, or any other " + "information you want to communicate to the " + "customer. The notes appear on the estimate " + "PDF and are visible to customers.", + "example": "Looking forward for your business.", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "project_id": { + "description": "Unique identifier of the project " + "associated with this estimate. Use the " + "project_id returned by the " + "Projects API for the same organization. " + "Linking an estimate to a project helps " + "with project-based billing, tracking, " + "and reporting.", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number of units of the product or service " + "being quoted in this line item. This " + "value is multiplied by the rate to " + "calculate the line item total.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit price or rate for the product or service " + "in this line item. This value is multiplied " + "by the quantity to determine the line item " + "total before taxes and discounts.", + "example": 120, + "format": "double", + "type": "number", + }, + "reference_number": { + "description": "Optional external identifier used " + "to associate the estimate with " + "other systems or workflows. Helps " + "improve traceability and " + "integration during estimate " + "creation.", + "example": "QRT-12346", + "type": "string", + }, + "retainer_percentage": { + "description": "Percentage of the estimate " + "amount to be collected as a " + "retainer (upfront payment) " + "when the estimate is accepted. " + "Specify a value between 0 and " + "100. This determines the " + "portion of the total estimate " + "that will be invoiced as a " + "retainer.", + "example": 10, + "type": "integer", + }, + "salesperson_name": { + "description": "Name of the sales person.", + "example": "Will smith", + "type": "string", + }, + "shipping_charge": { + "description": "Additional shipping or delivery " + "charges applied to the estimate. " + "Must be specified as a fixed " + 'amount (e.g., "25.00"). This ' + "amount is added to the estimate " + "total and is subject to tax " + "calculation.", + "example": 0, + "type": "string", + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": 11149000000061052, + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption.", + "example": 11149000000061054, + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier of the tax to be applied " + "to this line item. Use the `tax_id` " + "returned by the Taxes API for the same " + "organization. This determines which tax " + "rate and rules are applied to the line " + "item, affecting the final tax calculation " + "and compliance reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the Estimate. " + "Allowed Values: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "The ID of the template used for " + "generating the estimate PDF. Use this " + "to apply custom branding or formats. " + "Fetch template IDs using the Templates " + "API (GET /estimates/templates).", + "example": 982000000000143, + "type": "string", + }, + "terms": { + "description": "Defines the terms and conditions to be " + "included in the estimate document. This " + "field can be used to specify payment terms, " + "delivery schedules, return policies, or " + "other transactional details. The terms " + "appear on the estimate PDF and helps " + "communicate key conditions related to the " + "estimate.", + "example": "Terms & Conditions apply", + "type": "string", + }, + "unit": { + "description": "Unit of measurement for the product or " + "service in this line item (e.g., kgs, Nos., " + "hours). Helps clarify the quantity being " + "quoted.", + "example": " ", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "estimates. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["customer_id", "custom_fields"], + "type": "object", + }, + "UPDATEESTIMATE_REQUEST_BODY_SCHEMA": { + "properties": { + "accept_retainer": { + "description": "Boolean flag indicating whether a " + "retainer invoice should be " + "automatically created if the " + "customer accepts this estimate. " + "When set to true, a " + "retainer invoice is generated upon " + "acceptance, streamlining the " + "process for upfront payments or " + "deposits. Allowed values: " + "true and " + "false.", + "example": True, + "type": "boolean", + }, + "adjustment": { + "description": "Additional charge or credit amount " + "applied to the estimate total. This can " + "be used for rounding adjustments, " + "handling fees, or any other one-time " + "charges/credits. Positive values add to " + "the total, negative values reduce the " + "total. This amount is applied after tax " + "calculation and affects the final " + "estimate total.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Text description explaining " + "the reason for the " + "adjustment amount. This " + "description appears on the " + "estimate document to " + "explain why the adjustment " + "was applied. Common " + 'examples include "Rounding ' + 'adjustment", "Handling ' + 'fee", "Early payment ' + 'discount", or "Late payment ' + 'fee". This helps customers ' + "understand the purpose of " + "the adjustment.", + "example": " ", + "type": "string", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the estimate.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "currency_id": { + "description": "The ID of the currency in which the " + "estimate will be created. Use this to " + "specify the customer's preferred " + "currency for transactions. Fetch valid " + "currency IDs using the Currency API " + "(GET /currencies).", + "example": 982000000000190, + "type": "string", + }, + "custom_body": {"example": " ", "type": "string"}, + "custom_fields": { + "description": "Custom fields for an estimate.", + "items": { + "properties": { + "index": {"example": 1, "type": "integer"}, + "value": {"example": "15 Dec 2013", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "custom_subject": {"example": " ", "type": "string"}, + "customer_id": { + "description": "The ID of the customer (contact) for " + "whom the estimate is created. This " + "must be a valid contact ID from your " + "organization; obtain it using the " + "Contacts API (GET /contacts) or the " + "Create Contact response.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "Search estimates by estimate date.Variants " + "date_start, " + "date_end, " + "date_before and " + "date_after", + "example": "2013-11-18", + "type": "string", + }, + "description": { + "description": "Detailed description of the product or " + "service in this line item. Use this " + "field to provide specifications, " + "features, or any other relevant " + "information that helps the customer " + "understand about the line item.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount applied to the estimate. It can " + "be either in % or in amount. e.g. 12.5% " + "or 190.", + "example": 0, + "format": "double", + "type": "number", + }, + "discount_type": { + "description": "How the discount is specified. " + "Allowed values are entity_level or " + "item_level.Allowed Values: " + "entity_level and " + "item_level", + "example": "item_level", + "type": "string", + }, + "estimate_number": { + "description": "Search estimates by estimate " + "number.Variantsestimate_number_startswith " + "and " + "estimate_number_contains", + "example": "EST-00002", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate of the currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "expiry_date": { + "description": "The date of expiration of the estimates", + "example": "2013-11-30", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Used to specify how the " + "discount has to applied. " + "Either before or after the " + "calculation of tax.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique identifier of the item (product or " + "service) being quoted in this line item. " + "Use the `item_id` returned by the Items " + "API for the same organization. This links " + "the line item to a specific product or " + "service in your catalog.", + "example": " ", + "type": "string", + }, + "line_item_id": { + "description": "Unique identifier of the line item " + "within the estimate. Required when " + "updating or referencing a specific " + "line item. If omitted during " + "creation, a new line item will be " + "added.", + "example": 982000000567021, + "type": "string", + }, + "line_items": { + "description": "Line items of an estimate.", + "items": { + "properties": { + "bcy_rate": { + "description": "Exchange " + "rate " + "between " + "the " + "base " + "currency " + "and " + "the " + "transaction " + "currency " + "for " + "this " + "line " + "item. " + "Used " + "for " + "currency " + "conversion " + "and " + "reporting.", + "example": 120, + "format": "float", + "type": "number", + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "product " + "or " + "service " + "in " + "this " + "line " + "item. " + "Use " + "this " + "field " + "to " + "provide " + "specifications, " + "features, " + "or " + "any " + "other " + "relevant " + "information " + "that " + "helps " + "the " + "customer " + "understand " + "about " + "the " + "line " + "item.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount " + "applied " + "to " + "the " + "estimate. " + "It " + "can " + "be " + "either " + "in " + "% " + "or " + "in " + "amount. " + "e.g. " + "12.5% " + "or " + "190.", + "example": 0, + "format": "double", + "type": "number", + }, + "discount_amount": { + "description": "Discount " + "amount " + "applied " + "to " + "this " + "line " + "item. " + "This " + "value " + "reduces " + "the " + "line " + "item " + "total " + "before " + "tax " + "calculation.", + "example": 0, + "format": "float", + "type": "number", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "item " + "(product " + "or " + "service) " + "being " + "quoted " + "in " + "this " + "line " + "item. " + "Use " + "the " + "`item_id` " + "returned " + "by " + "the " + "Items " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "line " + "item " + "to " + "a " + "specific " + "product " + "or " + "service " + "in " + "your " + "catalog.", + "example": " ", + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "number " + "for " + "this " + "line " + "item " + "on " + "the " + "estimate. " + "Determines " + "the " + "display " + "order " + "of " + "line " + "items " + "in " + "the " + "estimate " + "document " + "— " + "lower " + "values " + "appear " + "first. " + "Use " + "this " + "field " + "to " + "organize " + "line " + "items " + "in " + "a " + "specific " + "sequence.", + "example": 1, + "type": "integer", + }, + "item_total": { + "description": "Total " + "amount " + "for " + "this " + "line " + "item " + "after " + "applying " + "quantity, " + "rate, " + "discounts, " + "and " + "taxes. " + "This " + "value " + "contributes " + "to " + "the " + "overall " + "estimate " + "total.", + "example": 120, + "format": "float", + "type": "number", + }, + "line_item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "line " + "item " + "within " + "the " + "estimate. " + "Required " + "when " + "updating " + "or " + "referencing " + "a " + "specific " + "line " + "item. " + "If " + "omitted " + "during " + "creation, " + "a " + "new " + "line " + "item " + "will " + "be " + "added.", + "example": 982000000567021, + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "of " + "the " + "business " + "location " + "associated " + "with " + "the " + "estimate. " + "Use " + "the " + "`location_id` " + "returned " + "by " + "the " + "Locations " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "estimate " + "to " + "a " + "specific " + "business " + "location, " + "which " + "may " + "affect " + "tax " + "calculations, " + "reporting, " + "and " + "business " + "operations. " + "Required " + "if " + "your " + "organization " + "has " + "multiple " + "locations " + "configured.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "of " + "the " + "product " + "or " + "service " + "for " + "this " + "line " + "item. " + "This " + "is " + "displayed " + "on " + "the " + "estimate " + "document " + "and " + "helps " + "the " + "customer " + "identify " + "what " + "is " + "being " + "quoted.", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "product " + "or " + "service " + "for " + "this " + "line " + "item. " + "Allowed " + "values: " + "goods " + "or " + "services. " + "For " + "South " + "Africa " + "Edition, " + "additional " + "values " + "include " + "capital_service " + "and " + "capital_goods. " + "This " + "classification " + "affects " + "tax " + "calculations, " + "reporting, " + "and " + "compliance " + "requirements " + "based " + "on " + "your " + "organization's " + "location " + "and " + "tax " + "regulations.", + "example": "goods", + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "of " + "the " + "product " + "or " + "service " + "being " + "quoted " + "in " + "this " + "line " + "item. " + "This " + "value " + "is " + "multiplied " + "by " + "the " + "rate " + "to " + "calculate " + "the " + "line " + "item " + "total.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit " + "price " + "or " + "rate " + "for " + "the " + "product " + "or " + "service " + "in " + "this " + "line " + "item. " + "This " + "value " + "is " + "multiplied " + "by " + "the " + "quantity " + "to " + "determine " + "the " + "line " + "item " + "total " + "before " + "taxes " + "and " + "discounts.", + "example": 120, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "tax " + "to " + "be " + "applied " + "to " + "this " + "line " + "item. " + "Use " + "the " + "`tax_id` " + "returned " + "by " + "the " + "Taxes " + "API " + "for " + "the " + "same " + "organization. " + "This " + "determines " + "which " + "tax " + "rate " + "and " + "rules " + "are " + "applied " + "to " + "the " + "line " + "item, " + "affecting " + "the " + "final " + "tax " + "calculation " + "and " + "compliance " + "reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_name": { + "description": "The name of the tax", + "example": "VAT", + "type": "string", + }, + "tax_percentage": { + "description": "The percentage of tax levied", + "example": 12.5, + "format": "float", + "type": "number", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tax_type": { + "description": "The type of the tax", + "example": "tax", + "type": "string", + }, + "tds_tax_id": { + "description": "ID of the TDS tax.", + "example": "982000000557012", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "product " + "or " + "service " + "in " + "this " + "line " + "item " + "(e.g., " + "kgs, " + "Nos., " + "hours). " + "Helps " + "clarify " + "the " + "quantity " + "being " + "quoted.", + "example": " ", + "type": "string", + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "E48", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier of the business " + "location associated with the estimate. " + "Use the `location_id` returned by the " + "Locations API for the same " + "organization. This links the estimate " + "to a specific business location, which " + "may affect tax calculations, " + "reporting, and business operations. " + "Required if your organization has " + "multiple locations configured.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name of the product or service for this line " + "item. This is displayed on the estimate " + "document and helps the customer identify what " + "is being quoted.", + "example": "Hard Drive", + "type": "string", + }, + "notes": { + "description": "Additional information or comments to be " + "displayed on the estimate document. This " + "field is typically used for thank you " + "messages, special instructions, or any other " + "information you want to communicate to the " + "customer. The notes appear on the estimate " + "PDF and are visible to customers.", + "example": "Looking forward for your business.", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "project_id": { + "description": "Unique identifier of the project " + "associated with this estimate. Use the " + "project_id returned by the " + "Projects API for the same organization. " + "Linking an estimate to a project helps " + "with project-based billing, tracking, " + "and reporting.", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number of units of the product or service " + "being quoted in this line item. This " + "value is multiplied by the rate to " + "calculate the line item total.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit price or rate for the product or service " + "in this line item. This value is multiplied " + "by the quantity to determine the line item " + "total before taxes and discounts.", + "example": 120, + "format": "double", + "type": "number", + }, + "reference_number": { + "description": "Optional external identifier used " + "to associate the estimate with " + "other systems or workflows. Helps " + "improve traceability and " + "integration during estimate " + "creation.", + "example": "QRT-12346", + "type": "string", + }, + "retainer_percentage": { + "description": "Percentage of the estimate " + "amount to be collected as a " + "retainer (upfront payment) " + "when the estimate is accepted. " + "Specify a value between 0 and " + "100. This determines the " + "portion of the total estimate " + "that will be invoiced as a " + "retainer.", + "example": 10, + "type": "integer", + }, + "salesperson_name": { + "description": "Name of the sales person.", + "example": "Will smith", + "type": "string", + }, + "shipping_charge": { + "description": "Additional shipping or delivery " + "charges applied to the estimate. " + "Must be specified as a fixed " + 'amount (e.g., "25.00"). This ' + "amount is added to the estimate " + "total and is subject to tax " + "calculation.", + "example": 0, + "type": "string", + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": 11149000000061052, + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption.", + "example": 11149000000061054, + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier of the tax to be applied " + "to this line item. Use the `tax_id` " + "returned by the Taxes API for the same " + "organization. This determines which tax " + "rate and rules are applied to the line " + "item, affecting the final tax calculation " + "and compliance reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the Estimate. " + "Allowed Values: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "The ID of the template used for " + "generating the estimate PDF. Use this " + "to apply custom branding or formats. " + "Fetch template IDs using the Templates " + "API (GET /estimates/templates).", + "example": 982000000000143, + "type": "string", + }, + "terms": { + "description": "Defines the terms and conditions to be " + "included in the estimate document. This " + "field can be used to specify payment terms, " + "delivery schedules, return policies, or " + "other transactional details. The terms " + "appear on the estimate PDF and helps " + "communicate key conditions related to the " + "estimate.", + "example": "Terms & Conditions apply", + "type": "string", + }, + "unit": { + "description": "Unit of measurement for the product or " + "service in this line item (e.g., kgs, Nos., " + "hours). Helps clarify the quantity being " + "quoted.", + "example": " ", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "estimates. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["customer_id", "custom_fields"], + "type": "object", + }, + "UPDATEESTIMATECUSTOMFIELDS_REQUEST_BODY_SCHEMA": { + "description": "Custom fields for an invoice.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": {"example": "15 Dec 2013", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "SENDESTIMATEEMAIL_REQUEST_BODY_SCHEMA": { + "properties": { + "body": { + "description": "Body of an email has to be sent.", + "example": "Dear Customer, Thanks for your business " + "enquiry. The estimate EST-000002 is " + "attached with this email. We can get " + "started if you send us your consent. For any " + "assistance you can reach us via email or " + "phone. Looking forward to hearing back " + "from you. Here's an overview of the estimate for " + "your reference. Estimate Overview: " + "Estimate : EST-000002 Date : 03 Oct " + "2013 Amount : $36.47 Regards
\\nZillium " + 'Inc
\\n""', + "type": "string", + }, + "cc_mail_ids": { + "description": "Array of email address of the recipients to be cced.", + "example": ["peterparker@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + "mail_documents": { + "description": "Array of Documents ids, which is attached into email", + "example": ["982000000000121"], + "items": {"type": "string"}, + "type": "array", + }, + "send_from_org_email_id": { + "description": "Boolean to trigger the email from the organization's email address", + "example": False, + "type": "boolean", + }, + "subject": { + "description": "Subject of an email has to be sent.", + "example": "Statement of transactions with Zillium Inc", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email address of the recipients.", + "example": ["willsmith@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids"], + "type": "object", + }, + "UPDATEESTIMATEBILLINGADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Billing address for the estimate", + "example": "B-1104, 11F, \n" + "Horizon International Tower, \n" + "No. 6, ZhiChun Road, HaiDian District,", + "type": "string", + }, + "city": { + "description": "City of the customer's billing address.", + "example": "Beijing", + "type": "string", + }, + "country": { + "description": "Country of the customer's billing address.", + "example": "China", + "type": "string", + }, + "fax": { + "description": "Customer's fax number.", + "example": "+86-10-82637827", + "type": "string", + }, + "state": { + "description": "State of the customer's billing address.", + "example": "Beijing", + "type": "string", + }, + "zip": { + "description": "Zip code of the customer's billing address.", + "example": 1000881, + "type": "string", + }, + }, + "type": "object", + }, + "UPDATEESTIMATESHIPPINGADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Billing address for the estimate", + "example": "4900 Hopyard Rd, Suite 310", + "type": "string", + }, + "city": { + "description": "City of the customer's billing address.", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country of the customer's billing address.", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Customer's fax number.", + "example": "+1-925-924-9600", + "type": "string", + }, + "state": { + "description": "State of the customer's billing address.", + "example": "CA", + "type": "string", + }, + "zip": { + "description": "Zip code of the customer's billing address.", + "example": 94588, + "type": "string", + }, + }, + "type": "object", + }, + "ADDESTIMATECOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "The description of the line items", + "example": "Estimate marked as sent", + "type": "string", + }, + "show_comment_to_clients": { + "description": "Boolean to show the comments to contacts in portal.", + "example": True, + "type": "boolean", + }, + }, + "type": "object", + }, + "UPDATEESTIMATECOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "The description of the line items", + "example": "Estimate created", + "type": "string", + }, + "show_comment_to_clients": { + "description": "Boolean to show the comments to contacts in portal.", + "example": " ", + "type": "boolean", + }, + }, + "type": "object", + }, + "CREATEEXPENSE_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the expense account.", + "example": 982000000561057, + "type": "string", + }, + "acquisition_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is an EU - " + "goods expense and acquisition " + "VAT needs to be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount of the Expense.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "can_reclaim_vat_on_mileage": { + "description": "To specify if tax can be reclaimed for this mileage expense.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "currency_id": {"example": 982000000567001, "type": "string"}, + "custom_fields": { + "description": "Custom fields for an expense.", + "example": [], + "items": {"type": "string"}, + "type": "array", + }, + "customer_id": { + "description": "ID of the expense account.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "Date of the expense", + "example": "2013-11-18", + "type": "string", + }, + "description": { + "description": "Description of the expense. Max-length [100]", + "example": "Marketing", + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "distance": { + "description": "Distance travelled for a particular " + "mileage expense where " + "mileage_type is " + "manual", + "example": " ", + "type": "string", + }, + "employee_id": { + "description": "ID of the employee who has submitted this mileage expense.", + "example": "982000000030040", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "end_reading": { + "description": "End reading of odometer when creating " + "a mileage expense where " + "mileage_type is " + "odometer.", + "example": " ", + "format": "double", + "type": "number", + }, + "engine_capacity_range": { + "description": "Engine capacity range for a " + "particular mileage expense. " + "Allowed Values: " + "less_than_1400cc, " + "between_1400cc_and_1600cc, " + "between_1600cc_and_2000cc " + "and " + "more_than_2000cc", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "exchange_rate": {"example": 1, "format": "double", "type": "number"}, + "fuel_type": { + "description": "Fuel type for a particular mileage " + "expense. Allowed Values: " + "petrol, lpg " + "and diesel", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke"], + "x-node_unavailable_in": [], + }, + "is_billable": {"example": True, "type": "boolean"}, + "is_inclusive_tax": {"example": False, "type": "boolean"}, + "line_items": { + "items": { + "properties": { + "account_id": { + "description": "ID of the expense account.", + "example": 982000000561057, + "type": "string", + }, + "acquisition_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "expense " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount of the Expense.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "description": { + "description": "Description of the expense. Max-length [100]", + "example": "Marketing", + "type": "string", + }, + "item_order": {"example": 1, "type": "string"}, + "line_item_id": {"example": 10763000000140068, "type": "string"}, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "the " + "expense. " + "This " + "denotes " + "whether " + "the " + "expense " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "or " + "capital " + "asset " + "purchase. " + "Allowed " + "Values:
" + "For " + "UK: " + "digital_service, " + "goods " + "and " + "service.
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_tax_id": { + "description": "ID of the reverse charge tax", + "example": 982000000561063, + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "expense " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Enter tax exemption code", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Enter tax exemption ID", + "example": 982000000561067, + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "mileage_rate": { + "description": "Mileage rate for a particular mileage expense.", + "example": " ", + "format": "double", + "type": "number", + }, + "mileage_type": {"example": "non_mileage", "type": "string"}, + "mileage_unit": { + "description": "Unit of the distance travelled. " + "Allowed Values: km and " + "mile", + "example": " ", + "type": "string", + }, + "paid_through_account_id": { + "description": "Search expenses by paid through account id.", + "example": 982000000567250, + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "product_type": { + "description": "Type of the expense. This denotes " + "whether the expense is to be treated " + "as a goods or service or capital " + "asset purchase. Allowed Values:
" + "For UK: " + "digital_service, " + "goods and " + "service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "project_id": { + "description": "ID of the project associated with the customer.", + "example": 982000000567226, + "type": "string", + }, + "reference_number": { + "description": "Reference number of the expense. Max-length [100]", + "example": None, + "type": "string", + }, + "reverse_charge_tax_id": { + "description": "ID of the reverse charge tax", + "example": 982000000561063, + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is a " + "non UK - service expense and " + "reverse charge VAT needs to " + "be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "start_reading": { + "description": "Start reading of odometer when " + "creating a mileage expense where " + "mileage_type is " + "odometer.", + "example": " ", + "format": "double", + "type": "number", + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + "tax_treatment": { + "description": "VAT treatment for the expense " + ".Choose whether the contact falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for UAE. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "ke", "za"], + "x-node_unavailable_in": [], + }, + "taxes": { + "items": { + "properties": { + "tax_amount": {"example": 11.85, "format": "double", "type": "number"}, + "tax_id": {"example": 982000000566007, "type": "string"}, + }, + "type": "object", + }, + "type": "array", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment for the expense. VAT " + "treatment denotes the location of " + "the vendor, if the vendor resides in " + "UK then the VAT treatment is " + "uk. If the vendor is in " + "an EU country & VAT registered, you " + "are resides in Northen Ireland and " + "purchasing Goods then his VAT " + "treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "eu_vat_not_registered", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vehicle_type": { + "description": "Vehicle type for a particular mileage " + "expense. Allowed Values: " + "car, van, " + "motorcycle and " + "bike", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "ID of the vendor the expense is made.", + "example": " ", + "type": "string", + }, + }, + "required": ["date", "account_id", "amount", "paid_through_account_id"], + "type": "object", + }, + "UPDATEEXPENSEWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the expense account.", + "example": 982000000561057, + "type": "string", + }, + "acquisition_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is an EU - " + "goods expense and acquisition " + "VAT needs to be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount of the Expense.", + "example": 120.5, + "format": "double", + "type": "number", + }, + "can_reclaim_vat_on_mileage": { + "description": "To specify if tax can be reclaimed for this mileage expense.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "currency_id": {"example": 982000000567001, "type": "string"}, + "custom_fields": { + "description": "Custom fields for an expense.", + "example": [], + "items": {"type": "string"}, + "type": "array", + }, + "customer_id": { + "description": "ID of the expense account.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "Date of the expense", + "example": "2013-11-18", + "type": "string", + }, + "description": { + "description": "Description of the expense. Max-length [100]", + "example": "Marketing", + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "distance": { + "description": "Distance travelled for a particular " + "mileage expense where " + "mileage_type is " + "manual", + "example": " ", + "type": "string", + }, + "employee_id": { + "description": "ID of the employee who has submitted this mileage expense.", + "example": "982000000030040", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "end_reading": { + "description": "End reading of odometer when creating " + "a mileage expense where " + "mileage_type is " + "odometer.", + "example": " ", + "format": "double", + "type": "number", + }, + "engine_capacity_range": { + "description": "Engine capacity range for a " + "particular mileage expense. " + "Allowed Values: " + "less_than_1400cc, " + "between_1400cc_and_1600cc, " + "between_1600cc_and_2000cc " + "and " + "more_than_2000cc", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "exchange_rate": {"example": 1, "format": "double", "type": "number"}, + "fuel_type": { + "description": "Fuel type for a particular mileage " + "expense. Allowed Values: " + "petrol, lpg " + "and diesel", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke"], + "x-node_unavailable_in": [], + }, + "is_billable": {"example": True, "type": "boolean"}, + "is_inclusive_tax": {"example": False, "type": "boolean"}, + "line_items": { + "items": { + "properties": { + "account_id": { + "description": "ID of the expense account.", + "example": 982000000561057, + "type": "string", + }, + "acquisition_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "expense " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount of the Expense.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "description": { + "description": "Description of the expense. Max-length [100]", + "example": "Marketing", + "type": "string", + }, + "item_order": {"example": 1, "type": "string"}, + "line_item_id": {"example": 10763000000140068, "type": "string"}, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "the " + "expense. " + "This " + "denotes " + "whether " + "the " + "expense " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "or " + "capital " + "asset " + "purchase. " + "Allowed " + "Values:
" + "For " + "UK: " + "digital_service, " + "goods " + "and " + "service.
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_tax_id": { + "description": "ID of the reverse charge tax", + "example": 982000000561063, + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "expense " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Enter tax exemption code", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Enter tax exemption ID", + "example": 982000000561067, + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "mileage_rate": { + "description": "Mileage rate for a particular mileage expense.", + "example": " ", + "format": "double", + "type": "number", + }, + "mileage_type": {"example": "non_mileage", "type": "string"}, + "mileage_unit": { + "description": "Unit of the distance travelled. " + "Allowed Values: km and " + "mile", + "example": " ", + "type": "string", + }, + "paid_through_account_id": { + "description": "Search expenses by paid through account id.", + "example": 982000000567250, + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "product_type": { + "description": "Type of the expense. This denotes " + "whether the expense is to be treated " + "as a goods or service or capital " + "asset purchase. Allowed Values:
" + "For UK: " + "digital_service, " + "goods and " + "service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "project_id": { + "description": "ID of the project associated with the customer.", + "example": 982000000567226, + "type": "string", + }, + "reference_number": { + "description": "Reference number of the expense. Max-length [100]", + "example": None, + "type": "string", + }, + "reverse_charge_tax_id": { + "description": "ID of the reverse charge tax", + "example": 982000000561063, + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is a " + "non UK - service expense and " + "reverse charge VAT needs to " + "be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "start_reading": { + "description": "Start reading of odometer when " + "creating a mileage expense where " + "mileage_type is " + "odometer.", + "example": " ", + "format": "double", + "type": "number", + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + "tax_treatment": { + "description": "VAT treatment for the expense " + ".Choose whether the contact falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for UAE. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "ke", "za"], + "x-node_unavailable_in": [], + }, + "taxes": { + "items": { + "properties": { + "tax_amount": {"example": 11.85, "format": "double", "type": "number"}, + "tax_id": {"example": 982000000566007, "type": "string"}, + }, + "type": "object", + }, + "type": "array", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment for the expense. VAT " + "treatment denotes the location of " + "the vendor, if the vendor resides in " + "UK then the VAT treatment is " + "uk. If the vendor is in " + "an EU country & VAT registered, you " + "are resides in Northen Ireland and " + "purchasing Goods then his VAT " + "treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "eu_vat_not_registered", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vehicle_type": { + "description": "Vehicle type for a particular mileage " + "expense. Allowed Values: " + "car, van, " + "motorcycle and " + "bike", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "ID of the vendor the expense is made.", + "example": " ", + "type": "string", + }, + }, + "required": ["date", "account_id", "amount", "paid_through_account_id"], + "type": "object", + }, + "UPDATEEXISTINGEXPENSE_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the expense account.", + "example": 982000000561057, + "type": "string", + }, + "acquisition_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is an EU - " + "goods expense and acquisition " + "VAT needs to be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount of the Expense.", + "example": 120.5, + "format": "double", + "type": "number", + }, + "can_reclaim_vat_on_mileage": { + "description": "To specify if tax can be reclaimed for this mileage expense.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "currency_id": {"example": 982000000567001, "type": "string"}, + "custom_fields": { + "description": "Custom fields for an expense.", + "example": [], + "items": {"type": "string"}, + "type": "array", + }, + "customer_id": { + "description": "ID of the expense account.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "Date of the expense", + "example": "2013-11-18", + "type": "string", + }, + "description": { + "description": "Description of the expense. Max-length [100]", + "example": "Marketing", + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "distance": { + "description": "Distance travelled for a particular " + "mileage expense where " + "mileage_type is " + "manual", + "example": " ", + "type": "string", + }, + "employee_id": { + "description": "ID of the employee who has submitted this mileage expense.", + "example": "982000000030040", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "end_reading": { + "description": "End reading of odometer when creating " + "a mileage expense where " + "mileage_type is " + "odometer.", + "example": " ", + "format": "double", + "type": "number", + }, + "engine_capacity_range": { + "description": "Engine capacity range for a " + "particular mileage expense. " + "Allowed Values: " + "less_than_1400cc, " + "between_1400cc_and_1600cc, " + "between_1600cc_and_2000cc " + "and " + "more_than_2000cc", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "exchange_rate": {"example": 1, "format": "double", "type": "number"}, + "fuel_type": { + "description": "Fuel type for a particular mileage " + "expense. Allowed Values: " + "petrol, lpg " + "and diesel", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke"], + "x-node_unavailable_in": [], + }, + "is_billable": {"example": True, "type": "boolean"}, + "is_inclusive_tax": {"example": False, "type": "boolean"}, + "line_items": { + "items": { + "properties": { + "account_id": { + "description": "ID of the expense account.", + "example": 982000000561057, + "type": "string", + }, + "acquisition_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "expense " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount of the Expense.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "description": { + "description": "Description of the expense. Max-length [100]", + "example": "Marketing", + "type": "string", + }, + "item_order": {"example": 1, "type": "string"}, + "line_item_id": {"example": 10763000000140068, "type": "string"}, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "the " + "expense. " + "This " + "denotes " + "whether " + "the " + "expense " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "or " + "capital " + "asset " + "purchase. " + "Allowed " + "Values:
" + "For " + "UK: " + "digital_service, " + "goods " + "and " + "service.
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_tax_id": { + "description": "ID of the reverse charge tax", + "example": 982000000561063, + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "expense " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Enter tax exemption code", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Enter tax exemption ID", + "example": 982000000561067, + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "mileage_rate": { + "description": "Mileage rate for a particular mileage expense.", + "example": " ", + "format": "double", + "type": "number", + }, + "mileage_type": {"example": "non_mileage", "type": "string"}, + "mileage_unit": { + "description": "Unit of the distance travelled. " + "Allowed Values: km and " + "mile", + "example": " ", + "type": "string", + }, + "paid_through_account_id": { + "description": "Search expenses by paid through account id.", + "example": 982000000567250, + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "product_type": { + "description": "Type of the expense. This denotes " + "whether the expense is to be treated " + "as a goods or service or capital " + "asset purchase. Allowed Values:
" + "For UK: " + "digital_service, " + "goods and " + "service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "project_id": { + "description": "ID of the project associated with the customer.", + "example": 982000000567226, + "type": "string", + }, + "reference_number": { + "description": "Reference number of the expense. Max-length [100]", + "example": None, + "type": "string", + }, + "reverse_charge_tax_id": { + "description": "ID of the reverse charge tax", + "example": 982000000561063, + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is a " + "non UK - service expense and " + "reverse charge VAT needs to " + "be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "start_reading": { + "description": "Start reading of odometer when " + "creating a mileage expense where " + "mileage_type is " + "odometer.", + "example": " ", + "format": "double", + "type": "number", + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + "tax_treatment": { + "description": "VAT treatment for the expense " + ".Choose whether the contact falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for UAE. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "ke", "za"], + "x-node_unavailable_in": [], + }, + "taxes": { + "items": { + "properties": { + "tax_amount": {"example": 11.85, "format": "double", "type": "number"}, + "tax_id": {"example": 982000000566007, "type": "string"}, + }, + "type": "object", + }, + "type": "array", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment for the expense. VAT " + "treatment denotes the location of " + "the vendor, if the vendor resides in " + "UK then the VAT treatment is " + "uk. If the vendor is in " + "an EU country & VAT registered, you " + "are resides in Northen Ireland and " + "purchasing Goods then his VAT " + "treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "eu_vat_not_registered", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vehicle_type": { + "description": "Vehicle type for a particular mileage " + "expense. Allowed Values: " + "car, van, " + "motorcycle and " + "bike", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "ID of the vendor the expense is made.", + "example": " ", + "type": "string", + }, + }, + "required": ["date", "account_id", "amount", "paid_through_account_id"], + "type": "object", + }, + "CREATEEMPLOYEEFOREXPENSE_REQUEST_BODY_SCHEMA": { + "properties": { + "email": {"example": "johnsmith@zilliuminc.com", "type": "string"}, + "name": {"example": "John David", "type": "string"}, + }, + "required": ["name", "email"], + "type": "object", + }, + "CREATEFIXEDASSET_REQUEST_BODY_SCHEMA": { + "properties": { + "asset_account_id": { + "description": "Enter the account id to track the fixed asset.", + "example": "3640355000000000367", + "type": "string", + }, + "asset_cost": { + "description": "Enter the purchase cost of the asset", + "example": 1000, + "format": "double", + "type": "number", + }, + "asset_name": { + "description": "Enter the name of the fixed asset.", + "example": "Laptop", + "type": "string", + }, + "asset_purchase_date": { + "description": "Enter the Purchase date of the asset", + "example": "2024-12-17", + "type": "string", + }, + "computation_type": { + "description": "Enter the computation types of " + "assets. The available types are: " + "prorata_basis and " + "no_prorata", + "example": "prorata_basis", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000098001", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "dep_start_value": { + "description": "Enter the value from which depreciation will be calculated.", + "example": 1000, + "format": "double", + "type": "number", + }, + "depreciation_account_id": { + "description": "Enter the account id to track the asset's depreciation over time.", + "example": "3640355000000000367", + "type": "string", + }, + "depreciation_frequency": { + "description": "Enter the frequency of " + "depreciation. The available " + "frequencies are: " + "yearly and " + "monthly", + "example": "yearly", + "type": "string", + }, + "depreciation_method": { + "description": "Enter the depreciation method " + "for your asset.The available " + "methods are: " + "declining_method " + "and " + "straight_line. " + "
For US and GLobal " + "Edition: " + "declining_method, " + "straight_line, " + "200_declining_method " + "and " + "150_declining_method", + "example": "declining_method", + "type": "string", + }, + "depreciation_percentage": { + "description": "Enter the depreciation " + "percentage only if the " + "entered depreciation " + "method is a declining " + "method. The entered " + "percentage should be " + "within the range of 0 to " + "100", + "example": 12, + "format": "double", + "type": "number", + }, + "depreciation_start_date": { + "description": "Enter the depreciation start date of the asset", + "example": "2024-12-17", + "type": "string", + }, + "description": {"description": "Description of the asset", "type": "string"}, + "expense_account_id": { + "description": "Enter the account id to track " + "the expenses associated with " + "the asset's depreciation.The " + "available account types are " + "Expense and Other " + "Expense", + "example": "3640355000000000421", + "type": "string", + }, + "fixed_asset_type_id": { + "description": "Associate the fixed asset with " + "a fixed asset type by " + "specifying fixed asset type " + "id.", + "example": "3640355000000319008", + "type": "string", + }, + "notes": { + "description": "Provide notes for the asset, if required", + "example": "This is a laptop Model 2024", + "type": "string", + }, + "salvage_value": { + "description": "Enter the remaining amount of the " + "asset after its useful life or the " + "value after it's fully depreciated", + "example": 100, + "format": "double", + "type": "string", + }, + "serial_no": { + "description": "serial number of the asset", + "example": "SN-0001", + "type": "string", + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the tag", + "example": "460000000094001", + "type": "string", + }, + "tag_option_id": { + "description": "Option ID of the tag", + "example": "460000000048001", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "total_life": { + "description": "Enter the total life of the asset (in months)", + "example": 60, + "type": "number", + }, + "warranty_expiry_date": { + "description": "Enter the warranty expiration date of the asset", + "example": "2027-12-17", + "type": "string", + }, + }, + "required": [ + "asset_name", + "fixed_asset_type_id", + "asset_account_id", + "asset_cost", + "asset_purchase_date", + ], + "type": "object", + }, + "UPDATEFIXEDASSETINFO_REQUEST_BODY_SCHEMA": { + "properties": { + "asset_account_id": { + "description": "Enter the account id to track the fixed asset.", + "example": "3640355000000000367", + "type": "string", + }, + "asset_cost": { + "description": "Enter the purchase cost of the asset", + "example": 1000, + "format": "double", + "type": "number", + }, + "asset_name": { + "description": "Enter the name of the fixed asset.", + "example": "Laptop", + "type": "string", + }, + "asset_purchase_date": { + "description": "Enter the Purchase date of the asset", + "example": "2024-12-17", + "type": "string", + }, + "computation_type": { + "description": "Enter the computation types of " + "assets. The available types are: " + "prorata_basis and " + "no_prorata", + "example": "prorata_basis", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000098001", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "dep_start_value": { + "description": "Enter the value from which depreciation will be calculated.", + "example": 1000, + "format": "double", + "type": "number", + }, + "depreciation_account_id": { + "description": "Enter the account id to track the asset's depreciation over time.", + "example": "3640355000000000367", + "type": "string", + }, + "depreciation_frequency": { + "description": "Enter the frequency of " + "depreciation. The available " + "frequencies are: " + "yearly and " + "monthly", + "example": "yearly", + "type": "string", + }, + "depreciation_method": { + "description": "Enter the depreciation method " + "for your asset.The available " + "methods are: " + "declining_method " + "and " + "straight_line. " + "
For US and GLobal " + "Edition: " + "declining_method, " + "straight_line, " + "200_declining_method " + "and " + "150_declining_method", + "example": "declining_method", + "type": "string", + }, + "depreciation_percentage": { + "description": "Enter the depreciation " + "percentage only if the " + "entered depreciation " + "method is a declining " + "method. The entered " + "percentage should be " + "within the range of 0 to " + "100", + "example": 12, + "format": "double", + "type": "number", + }, + "depreciation_start_date": { + "description": "Enter the depreciation start date of the asset", + "example": "2024-12-17", + "type": "string", + }, + "description": {"description": "Description of the asset", "type": "string"}, + "expense_account_id": { + "description": "Enter the account id to track " + "the expenses associated with " + "the asset's depreciation.The " + "available account types are " + "Expense and Other " + "Expense", + "example": "3640355000000000421", + "type": "string", + }, + "fixed_asset_type_id": { + "description": "Associate the fixed asset with " + "a fixed asset type by " + "specifying fixed asset type " + "id.", + "example": "3640355000000319008", + "type": "string", + }, + "notes": { + "description": "Provide notes for the asset, if required", + "example": "This is a laptop Model 2024", + "type": "string", + }, + "salvage_value": { + "description": "Enter the remaining amount of the " + "asset after its useful life or the " + "value after it's fully depreciated", + "example": 100, + "format": "double", + "type": "string", + }, + "serial_no": { + "description": "serial number of the asset", + "example": "SN-0001", + "type": "string", + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the tag", + "example": "460000000094001", + "type": "string", + }, + "tag_option_id": { + "description": "Option ID of the tag", + "example": "460000000048001", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "total_life": { + "description": "Enter the total life of the asset (in months)", + "example": 60, + "type": "number", + }, + "warranty_expiry_date": { + "description": "Enter the warranty expiration date of the asset", + "example": "2027-12-17", + "type": "string", + }, + }, + "required": [ + "asset_name", + "fixed_asset_type_id", + "asset_account_id", + "asset_cost", + "asset_purchase_date", + ], + "type": "object", + }, + "WRITEOFFFIXEDASSET_REQUEST_BODY_SCHEMA": { + "properties": { + "date": { + "description": "Enter the date on which the fixed asset is written off", + "example": "2024-12-17", + "type": "string", + }, + "expense_account_id": { + "description": "Enter an account id to track " + "the expenses associated with " + "the written-off fixed asset", + "example": "3640355000000000421", + "type": "string", + }, + "reason": { + "description": "Enter the reason for writing off the fixed asset", + "example": "Asset is damaged", + "type": "string", + }, + }, + "required": ["date", "expense_account_id", "reason"], + "type": "object", + }, + "SELLFIXEDASSET_REQUEST_BODY_SCHEMA": { + "properties": { + "expense_account_id": { + "description": "Enter the account id to track " + "the expenses associated with " + "the asset's depreciation.The " + "available account types are " + "Expense and Other " + "Expense", + "example": "3640355000000000421", + "type": "string", + }, + "invoice_id": { + "description": "Enter the invoice id associated with selling the fixed asset.", + "example": "3640355000000319008", + "type": "string", + }, + "line_item_id": { + "description": "Enter the line item id that is " + "associated with the fixed asset " + "account.", + "example": "3640355000000319008", + "type": "string", + }, + "reason": { + "description": "Enter the reason for selling the fixed asset", + "example": "Asset is no longer required", + "type": "string", + }, + }, + "required": ["invoice_id", "line_item_id", "reason", "expense_account_id"], + "type": "object", + }, + "ADDFIXEDASSETCOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "It displays the description of the " + "comment added for the fixed asset", + "example": "Fixed asset is in good condition", + "type": "string", + } + }, + "type": "object", + }, + "CREATEFIXEDASSETTYPE_REQUEST_BODY_SCHEMA": { + "properties": { + "computation_type": { + "description": "Enter the computation types of " + "assets. The available types are: " + "prorata_basis and " + "no_prorata", + "example": "prorata_basis", + "type": "string", + }, + "depreciation_account_id": { + "description": "Enter the account id to track the asset's depreciation over time.", + "example": "3640355000000000367", + "type": "string", + }, + "depreciation_frequency": { + "description": "Enter the frequency of " + "depreciation. The available " + "frequencies are: " + "yearly and " + "monthly", + "example": "yearly", + "type": "string", + }, + "depreciation_method": { + "description": "Enter the depreciation method " + "for your asset.The available " + "methods are: " + "declining_method " + "and " + "straight_line. " + "
For US and GLobal " + "Edition: " + "declining_method, " + "straight_line, " + "200_declining_method " + "and " + "150_declining_method", + "example": "declining_method", + "type": "string", + }, + "depreciation_percentage": { + "description": "Enter the depreciation " + "percentage only if the " + "entered depreciation " + "method is a declining " + "method. The entered " + "percentage should be " + "within the range of 0 to " + "100", + "example": 12, + "format": "double", + "type": "number", + }, + "expense_account_id": { + "description": "Enter the account id to track " + "the expenses associated with " + "the asset's depreciation.The " + "available account types are " + "Expense and Other " + "Expense", + "example": "3640355000000000421", + "type": "string", + }, + "fixed_asset_type_name": { + "description": "Enter the name of fixed asset type", + "example": "Machines", + "type": "string", + }, + "salvage_value": { + "description": "Enter the remaining amount of the " + "asset after its useful life or the " + "value after it's fully depreciated", + "example": 100, + "format": "double", + "type": "string", + }, + "total_life": { + "description": "Enter the total life of the asset (in months)", + "example": 60, + "type": "number", + }, + }, + "required": [ + "fixed_asset_type_name", + "expense_account_id", + "depreciation_account_id", + "depreciation_method", + "depreciation_frequency", + "depreciation_percentage", + "total_life", + "salvage_value", + "computation_type", + ], + "type": "object", + }, + "UPDATEFIXEDASSETTYPE_REQUEST_BODY_SCHEMA": { + "properties": { + "computation_type": { + "description": "Enter the computation types of " + "assets. The available types are: " + "prorata_basis and " + "no_prorata", + "example": "prorata_basis", + "type": "string", + }, + "depreciation_account_id": { + "description": "Enter the account id to track the asset's depreciation over time.", + "example": "3640355000000000367", + "type": "string", + }, + "depreciation_frequency": { + "description": "Enter the frequency of " + "depreciation. The available " + "frequencies are: " + "yearly and " + "monthly", + "example": "yearly", + "type": "string", + }, + "depreciation_method": { + "description": "Enter the depreciation method " + "for your asset.The available " + "methods are: " + "declining_method " + "and " + "straight_line. " + "
For US and GLobal " + "Edition: " + "declining_method, " + "straight_line, " + "200_declining_method " + "and " + "150_declining_method", + "example": "declining_method", + "type": "string", + }, + "depreciation_percentage": { + "description": "Enter the depreciation " + "percentage only if the " + "entered depreciation " + "method is a declining " + "method. The entered " + "percentage should be " + "within the range of 0 to " + "100", + "example": 12, + "format": "double", + "type": "number", + }, + "expense_account_id": { + "description": "Enter the account id to track " + "the expenses associated with " + "the asset's depreciation.The " + "available account types are " + "Expense and Other " + "Expense", + "example": "3640355000000000421", + "type": "string", + }, + "fixed_asset_type_name": { + "description": "Enter the name of fixed asset type", + "example": "Machines", + "type": "string", + }, + "salvage_value": { + "description": "Enter the remaining amount of the " + "asset after its useful life or the " + "value after it's fully depreciated", + "example": 100, + "format": "double", + "type": "string", + }, + "total_life": { + "description": "Enter the total life of the asset (in months)", + "example": 60, + "type": "number", + }, + }, + "required": [ + "fixed_asset_type_name", + "expense_account_id", + "depreciation_account_id", + "depreciation_method", + "depreciation_frequency", + "depreciation_percentage", + "total_life", + "salvage_value", + "computation_type", + ], + "type": "object", + }, + "CREATECUSTOMERINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Additional charge or credit amount " + "applied to the invoice total. This can " + "be used for rounding adjustments, " + "handling fees, or any other one-time " + "charges/credits. Positive values add to " + "the total, negative values reduce the " + "total. This amount is applied after tax " + "calculation and affects the final " + "invoice total.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Text description explaining " + "the reason for the " + "adjustment amount. This " + "description appears on the " + "invoice document to explain " + "why the adjustment was " + "applied. Common examples " + 'include "Rounding ' + 'adjustment", "Handling ' + 'fee", "Early payment ' + 'discount", or "Late payment ' + 'fee". This helps customers ' + "understand the purpose of " + "the adjustment.", + "example": " ", + "type": "string", + }, + "allow_partial_payments": { + "description": "Boolean flag that " + "determines whether " + "customers can make partial " + "payments against this " + "invoice. When " + "true, " + "customers can pay less than " + "the full invoice amount, " + "and the invoice will remain " + "open with a remaining " + "balance. When " + "false, " + "customers must pay the full " + "amount to complete the " + "invoice. This setting " + "affects payment processing " + "and invoice status " + "tracking.", + "example": True, + "type": "boolean", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used " + "to group Items (products, " + "services, or charges) together. " + "Refer the [link][2] for more " + "deails. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "batch_payments": { + "description": "Array of batch payment details to " + "be processed with the invoice. Each " + "payment includes payment mode, " + "amount, and account information for " + "automated payment processing.", + "example": [ + {"account_id": "1000000095342", "amount": "100.00", "payment_mode": "Cash"} + ], + "items": { + "properties": { + "account_id": { + "description": "Account ID where the payment will be recorded.", + "example": "1000000095342", + "type": "string", + }, + "amount": { + "description": "Payment amount for this batch payment entry.", + "example": "100.00", + "type": "string", + }, + "payment_mode": { + "description": "Mode of payment for this batch payment entry.", + "example": "Cash", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "billing_address_id": { + "description": "Unique identifier of the " + "billing address to be used for " + "this invoice. Use the " + "`billing_address_id` returned " + "by the Addresses API for the " + "same customer and organization. " + "This address appears on the " + "invoice document and is used " + "for billing purposes. If " + "omitted, the customer's default " + "billing address will be used.", + "example": "218500000000142012", + "type": "string", + }, + "cfdi_usage": { + "description": "Choose CFDI Usage. Allowed " + "values:
acquisition_of_merchandise, " + "return_discount_bonus, " + "general_expense, " + "buildings, " + "furniture_office_equipment, " + "transport_equipment, " + "computer_equipmentdye_molds_tools, " + "telephone_communication, " + "satellite_communication, " + "other_machinery_equipment, " + "hospital_expense, " + "medical_expense_disability, " + "funeral_expense, " + "donation, " + "interest_mortage_loans, " + "contribution_sar, " + "medical_expense_insurance_pormium, " + "school_transportation_expense, " + "deposit_saving_account, " + "payment_educational_service, " + "no_tax_effect, " + "payment, " + "payroll.", + "example": "acquisition_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "contact_persons": { + "description": "Array of contact person IDs " + "associated with the specified " + "customer. Provide the IDs of " + "contact persons (from the " + "Contacts/Contact Persons API) who " + "should receive invoice " + "communications (e.g., emails) for " + "this invoice. Each ID must belong " + "to the same customer and " + "organization as the invoice. If " + "omitted, the customer's primary " + "contact may be used.", + "example": ["982000000870911", "982000000870915"], + "items": {"type": "string"}, + "type": "array", + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "currency_id": { + "description": "Unique identifier of the currency in " + "which the invoice will be created for " + "the customer. Use the `currency_id` " + "returned by the Currencies API for the " + "same organization. This sets the " + "currency for all monetary amounts on " + "the invoice; if it differs from the " + "organization's base currency, an " + "appropriate `exchange_rate` may be " + "required.", + "example": 982000000000190, + "type": "string", + }, + "custom_body": {"example": " ", "type": "string"}, + "custom_fields": { + "description": "Custom fields for an invoice.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "custom_subject": {"example": " ", "type": "string"}, + "customer_id": { + "description": "Unique identifier of the customer in " + "the current organization for whom this " + "invoice is created. Required when " + "creating an invoice. Use the " + "`customer_id` returned by the get " + "Customers API. Must belong to the " + "organization specified by the " + "`organization_id` parameter.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "The date on which the invoice is created. Use " + "the format yyyy-mm-dd (e.g., 2013-11-17). " + "This date appears on the invoice document and " + "is used for accounting purposes. When " + "searching invoices, supports variants: " + "date_start, " + "date_end, " + "date_before and " + "date_after.", + "example": "2013-11-17", + "type": "string", + }, + "discount": { + "description": "Discount amount applied to the invoice. " + "Can be specified as a percentage (e.g., " + "12.5 for 12.5%) — up to a maximum of 100% " + "— or as a fixed amount (e.g., 190 for " + "$190). The discount is applied based on " + "the `is_discount_before_tax` setting and " + "`discount_type` (entity_level or " + "item_level).", + "example": 0, + "format": "float", + "type": "number", + }, + "discount_type": { + "description": "Specifies the scope of discount " + "application. " + "entity_level applies " + "the discount to the entire invoice " + "total. item_level " + "applies the discount to individual " + "line items. This determines how the " + "discount amount is distributed " + "across the invoice items.", + "example": "item_level", + "type": "string", + }, + "due_date": { + "description": "The date by which payment is due for the " + "invoice. Use the format yyyy-mm-dd (e.g., " + "2013-12-03). This date is typically " + "calculated as invoice date + " + "payment_terms days, but can be overridden " + "with a custom date. When searching " + "invoices, supports variants: " + "due_date_start, " + "due_date_end, " + "due_date_before and " + "due_date_after.", + "example": "2013-12-03", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate used to convert " + "amounts from the invoice currency to " + "the organization's base currency. " + "Required when the invoice currency " + "differs from the organization's base " + "currency. For example, if base " + "currency is USD and invoice currency " + "is EUR, set the EUR to USD exchange " + "rate (e.g., 1.18). Default value is " + "1.0 when invoice currency matches " + "base currency.", + "example": 1, + "format": "float", + "type": "number", + }, + "expense_id": { + "description": "Unique identifier of the billable " + "expense to be converted to an invoice " + "line item. This converts a previously " + "recorded expense into a billable line " + "item on the invoice, enabling " + "expense-to-invoice conversion.", + "example": "460000000028080", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "invoice_number": { + "description": "Unique identifier or reference " + "number for the invoice. When " + "creating an invoice, this can be a " + "custom number (requires " + "`ignore_auto_number_generation=true` " + "query parameter) or left empty for " + "auto-generation. When searching " + "invoices, supports variants: " + "invoice_number_startswith " + "and " + "invoice_number_contains. " + "Maximum length is 100 characters. " + "Must be unique within the " + "organization.", + "example": "INV-00003", + "type": "string", + }, + "invoiced_estimate_id": { + "description": "Unique identifier of the " + "estimate that was converted " + "to create this invoice. Use " + "this field when creating an " + "invoice from an existing " + "estimate. The " + "`invoiced_estimate_id` links " + "this invoice back to its " + "source estimate, enabling " + "tracking of the conversion " + "process and maintaining the " + "relationship between " + "estimates and invoices.", + "example": " ", + "type": "string", + }, + "is_discount_before_tax": { + "description": "Boolean flag that " + "determines when the " + "discount is applied in " + "relation to tax " + "calculation. When " + "true, discount " + "is applied before tax " + "calculation (discount " + "reduces the taxable " + "amount). When " + "false, " + "discount is applied after " + "tax calculation (discount " + "reduces the final total " + "including tax). This " + "affects the final invoice " + "total and tax amounts.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Boolean flag that indicates " + "whether line item rates include " + "tax. When true, the " + "specified rates are inclusive of " + "tax (tax is already included in " + "the rate). When " + "false, the rates are " + "exclusive of tax (tax will be " + "added to the rate). This affects " + "how tax calculations are " + "performed on line items.", + "example": False, + "type": "boolean", + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "line_items": { + "items": { + "properties": { + "bcy_rate": { + "description": "Base " + "currency " + "rate " + "for " + "the " + "line " + "item. " + "This " + "is " + "the " + "rate " + "in " + "the " + "organization's " + "base " + "currency " + "before " + "any " + "currency " + "conversion. " + "Used " + "for " + "multi-currency " + "scenarios " + "where " + "the " + "invoice " + "currency " + "differs " + "from " + "the " + "base " + "currency.", + "example": 120, + "format": "float", + "type": "number", + }, + "bill_id": { + "description": "Unique " + "identifier " + "of " + "the " + "specific " + "bill " + "line " + "item " + "to " + "be " + "converted " + "to " + "an " + "invoice " + "line " + "item. " + "This " + "allows " + "you " + "to " + "convert " + "individual " + "line " + "items " + "from " + "a " + "bill " + "rather " + "than " + "the " + "entire " + "bill, " + "providing " + "granular " + "control " + "over " + "bill-to-invoice " + "conversion.", + "example": " ", + "type": "string", + }, + "bill_item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "specific " + "bill " + "line " + "item " + "to " + "be " + "converted " + "to " + "an " + "invoice " + "line " + "item. " + "This " + "allows " + "you " + "to " + "convert " + "individual " + "line " + "items " + "from " + "a " + "bill " + "rather " + "than " + "the " + "entire " + "bill, " + "providing " + "granular " + "control " + "over " + "bill-to-invoice " + "conversion.", + "example": " ", + "type": "string", + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item " + "providing " + "additional " + "information " + "about " + "the " + "product " + "or " + "service. " + "This " + "description " + "appears " + "on " + "the " + "invoice " + "document " + "and " + "helps " + "customers " + "understand " + "what " + "they " + "are " + "being " + "charged " + "for. " + "Maximum " + "length " + "is " + "2000 " + "characters.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount " + "amount " + "applied " + "to " + "the " + "invoice. " + "Can " + "be " + "specified " + "as " + "a " + "percentage " + "(e.g., " + "12.5 " + "for " + "12.5%) " + "— " + "up " + "to " + "a " + "maximum " + "of " + "100% " + "— " + "or " + "as " + "a " + "fixed " + "amount " + "(e.g., " + "190 " + "for " + "$190). " + "The " + "discount " + "is " + "applied " + "based " + "on " + "the " + "`is_discount_before_tax` " + "setting " + "and " + "`discount_type` " + "(entity_level " + "or " + "item_level).", + "example": 0, + "format": "float", + "type": "number", + }, + "discount_amount": { + "description": "Fixed " + "discount " + "amount " + "applied " + "to " + "this " + "specific " + "line " + "item. " + "This " + "is " + "a " + "monetary " + "value " + "that " + "reduces " + "the " + "line " + "item " + "total. " + "The " + "discount " + "is " + "applied " + "after " + "the " + "rate " + "x " + "quantity " + "calculation " + "but " + "before " + "tax " + "calculation. " + "Can " + "be " + "used " + "for " + "line-item " + "specific " + "discounts " + "or " + "promotions.", + "example": 0, + "format": "float", + "type": "number", + }, + "expense_id": { + "description": "Unique " + "identifier " + "of " + "the " + "billable " + "expense " + "to " + "be " + "converted " + "to " + "an " + "invoice " + "line " + "item. " + "This " + "converts " + "a " + "previously " + "recorded " + "expense " + "into " + "a " + "billable " + "line " + "item " + "on " + "the " + "invoice, " + "enabling " + "expense-to-invoice " + "conversion.", + "example": "460000000028080", + "type": "string", + }, + "expense_receipt_name": {"type": "string"}, + "header_name": { + "description": "Name " + "of " + "the " + "item " + "header " + "or " + "category " + "that " + "groups " + "related " + "line " + "items " + "together. " + "This " + "is " + "used " + "for " + "organizational " + "purposes " + "to " + "categorize " + "and " + "group " + "similar " + "items " + "on " + "the " + "invoice. " + "For " + "example, " + '"Electronic ' + 'devices", ' + '"Office ' + 'supplies", ' + "or " + '"Professional ' + 'services". ' + "This " + "helps " + "in " + "organizing " + "and " + "presenting " + "line " + "items " + "in " + "a " + "structured " + "manner " + "on " + "the " + "invoice " + "document.", + "example": "Electronic devices", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "item " + "(product " + "or " + "service) " + "to " + "be " + "included " + "in " + "the " + "invoice " + "line " + "item. " + "Use " + "the " + "`item_id` " + "returned " + "by " + "the " + "Items " + "API " + "for " + "the " + "same " + "organization. " + "This " + "field " + "is " + "required " + "for " + "each " + "line " + "item " + "and " + "determines " + "the " + "item " + "details, " + "pricing, " + "and " + "tax " + "settings " + "that " + "will " + "be " + "applied " + "to " + "this " + "line " + "item.", + "example": 982000000030049, + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "number " + "for " + "this " + "line " + "item " + "on " + "the " + "invoice. " + "Determines " + "the " + "display " + "order " + "of " + "line " + "items " + "on " + "the " + "invoice " + "document. " + "Lower " + "numbers " + "appear " + "first. " + "Used " + "for " + "organizing " + "line " + "items " + "in " + "a " + "specific " + "sequence.", + "example": 1, + "type": "integer", + }, + "location_id": { + "description": "Unique " + "identifier " + "of " + "the " + "business " + "location " + "associated " + "with " + "the " + "invoice. " + "Use " + "the " + "`location_id` " + "returned " + "by " + "the " + "Locations " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "invoice " + "to " + "a " + "specific " + "business " + "location, " + "which " + "may " + "affect " + "tax " + "calculations, " + "reporting, " + "and " + "business " + "operations. " + "Required " + "if " + "your " + "organization " + "has " + "multiple " + "locations " + "configured.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "or " + "title " + "of " + "the " + "line " + "item " + "as it " + "appears " + "on " + "the " + "invoice. " + "Maximum " + "length " + "is " + "100 " + "characters. " + "Can " + "be " + "customized " + "to " + "override " + "the " + "default " + "item " + "name " + "from " + "the " + "item " + "catalog.", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "product " + "or " + "service " + "for " + "this " + "line " + "item. " + "Allowed " + "values: " + "goods " + "or " + "services. " + "For " + "South " + "Africa " + "Edition, " + "additional " + "values " + "include " + "capital_service " + "and " + "capital_goods. " + "This " + "classification " + "affects " + "tax " + "calculations, " + "reporting, " + "and " + "compliance " + "requirements " + "based " + "on " + "your " + "organization's " + "location " + "and " + "tax " + "regulations.", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "Unique " + "identifier " + "of " + "the " + "project " + "associated " + "with " + "this " + "line " + "item. " + "Use " + "the " + "`project_id` " + "returned " + "by " + "the " + "Projects " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "line " + "item " + "to " + "a " + "specific " + "project " + "for " + "project-based " + "billing, " + "time " + "tracking, " + "and " + "cost " + "allocation. " + "Optional " + "field " + "that " + "enables " + "project-specific " + "invoicing " + "and " + "reporting.", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "of " + "the " + "item " + "being " + "invoiced. " + "This " + "value " + "is " + "multiplied " + "by " + "the " + "rate " + "to " + "calculate " + "the " + "line " + "item " + "total. " + "Must " + "be " + "a " + "positive " + "number " + "greater " + "than " + "zero.", + "example": 1, + "format": "float", + "type": "number", + }, + "rate": { + "description": "Unit " + "rate " + "or " + "price " + "for " + "the " + "line " + "item " + "in " + "the " + "invoice " + "currency. " + "This " + "is " + "the " + "amount " + "charged " + "per " + "unit " + "of " + "the " + "item. " + "The " + "rate " + "is " + "used " + "to " + "calculate " + "the " + "line " + "item " + "total " + "(rate " + "x " + "quantity) " + "and " + "affects " + "the " + "final " + "invoice " + "amount.", + "example": 120, + "format": "double", + "type": "number", + }, + "salesorder_item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "sales " + "order " + "line " + "item " + "that " + "is " + "being " + "converted " + "to " + "this " + "invoice " + "line " + "item. " + "Use " + "this " + "field " + "when " + "creating " + "an " + "invoice " + "from " + "an " + "existing " + "sales " + "order. " + "The " + "`salesorder_item_id` " + "links " + "this " + "invoice " + "line " + "item " + "back " + "to " + "its " + "source " + "sales " + "order " + "line " + "item, " + "enabling " + "tracking " + "of " + "the " + "conversion " + "process " + "and " + "maintaining " + "the " + "relationship " + "between " + "sales " + "orders " + "and " + "invoices.", + "example": " ", + "type": "string", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tags": { + "description": "Array " + "of " + "reporting " + "tags " + "associated " + "with " + "this " + "line " + "item. " + "Each " + "tag " + "consists " + "of a " + "`tag_id` " + "and " + "`tag_option_id` " + "that " + "categorize " + "the " + "line " + "item " + "for " + "reporting " + "and " + "analytics " + "purposes. " + "Tags " + "help " + "organize " + "and " + "filter " + "data " + "across " + "reports " + "and " + "enable " + "detailed " + "business " + "intelligence " + "analysis.", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 982000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 982000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "tax " + "to " + "be " + "applied " + "to " + "this " + "line " + "item. " + "Use " + "the " + "`tax_id` " + "returned " + "by " + "the " + "Taxes " + "API " + "for " + "the " + "same " + "organization. " + "This " + "determines " + "which " + "tax " + "rate " + "and " + "rules " + "are " + "applied " + "to " + "the " + "line " + "item, " + "affecting " + "the " + "final " + "tax " + "calculation " + "and " + "compliance " + "reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_name": { + "description": "The name of the tax", + "example": "VAT", + "type": "string", + }, + "tax_percentage": { + "description": "The percentage of tax levied", + "example": 12.5, + "format": "float", + "type": "number", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tax_type": { + "description": "The type of the tax", + "example": "tax", + "type": "string", + }, + "tds_tax_id": { + "description": "ID of the TDS tax.", + "example": "982000000557012", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "time_entry_ids": { + "description": "Array " + "of " + "time " + "entry " + "IDs " + "to " + "be " + "billed " + "on " + "this " + "line " + "item. " + "This " + "allows " + "you " + "to " + "bill " + "specific " + "time " + "entries " + "against " + "this " + "line " + "item, " + "enabling " + "detailed " + "time-based " + "invoicing " + "and " + "project " + "cost " + "tracking.", + "example": [], + "items": {"type": "string"}, + "type": "array", + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "line " + "item " + "quantity. " + "Examples " + "include " + '"Nos" ' + "(Numbers), " + '"kgs" ' + "(Kilograms), " + '"hrs" ' + "(Hours), " + '"pcs" ' + "(Pieces), " + "etc. " + "This " + "helps " + "clarify " + "what " + "the " + "quantity " + "represents. " + "Maximum " + "length " + "is " + "100 " + "characters.", + "example": " ", + "type": "string", + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "E48", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "required": ["item_id"], + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier of the business " + "location associated with the invoice. " + "Use the `location_id` returned by the " + "Locations API for the same " + "organization. This links the invoice " + "to a specific business location, which " + "may affect tax calculations, " + "reporting, and business operations. " + "Required if your organization has " + "multiple locations configured.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional information or comments to be " + "displayed on the invoice document. This " + "field is typically used for thank you " + "messages, special instructions, or any other " + "information you want to communicate to the " + "customer. The notes appear on the invoice " + "PDF and are visible to customers", + "example": "Looking forward for your business.", + "type": "string", + }, + "payment_options": { + "description": "Payment options for the invoice, " + "online payment gateways and bank " + "accounts. Will be displayed in the " + "pdf.", + "properties": { + "payment_gateways": { + "description": "Online payment gateways through which payment can be made.", + "items": { + "properties": { + "additional_field1": { + "description": "Paypal " + "payment " + "method. " + "Allowed " + "Values: " + "standard " + "and " + "adaptive", + "example": "standard", + "type": "string", + }, + "configured": { + "description": "Boolean " + "check " + "to " + "see " + "if " + "a " + "payment " + "gateway " + "has " + "been " + "configured", + "example": True, + "type": "boolean", + }, + "gateway_name": { + "description": "Name " + "of " + "the " + "payment " + "gateway " + "associated " + "with " + "the " + "invoice. " + "E.g. " + "paypal, " + "stripe.Allowed " + "Values: " + "paypal, " + "authorize_net, " + "payflow_pro, " + "stripe, " + "2checkout " + "and " + "braintree", + "example": "paypal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "payment_terms": { + "description": "Number of days allowed for payment " + "(e.g., 15, 30, 60). This value " + "determines the invoice due date by " + "adding the specified number of days " + "to the invoice date. For example, if " + "invoice date is 2023-11-17 and " + "payment_terms is 15, the due_date " + "will be 2023-12-02. Maximum value is " + "100 days.", + "example": 15, + "type": "integer", + }, + "payment_terms_label": { + "description": "Custom label for payment terms " + "that appears on the invoice " + "document. Used to override the " + "default system-generated " + "label. For example, instead of " + 'the default "Net 15 Days", you ' + 'can set this to "Net 15", "Due ' + 'in 15 days", or any custom ' + "text. This label is displayed " + "to customers on the invoice. " + "Maximum length is 100 " + "characters.", + "example": "Net 15", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "reason": {"example": " ", "type": "string"}, + "recurring_invoice_id": { + "description": "Unique identifier of the " + "recurring invoice template " + "that generated this invoice. " + "Use this field when creating " + "an invoice from a recurring " + "invoice template. The " + "`recurring_invoice_id` links " + "this invoice back to its " + "source recurring invoice, " + "enabling tracking of which " + "template generated it and " + "maintaining the recurring " + "invoice relationship.", + "example": " ", + "type": "string", + }, + "reference_number": { + "description": "External reference number or " + "identifier for the invoice, such " + "as a purchase order number, " + "contract number, or any other " + "business reference. When " + "converting from an estimate or " + "sales order, this field can be " + "used to reference the original " + "document number.", + "example": " ", + "type": "string", + }, + "salesorder_item_id": { + "description": "Unique identifier of the sales " + "order line item that is being " + "converted to this invoice line " + "item. Use this field when " + "creating an invoice from an " + "existing sales order. The " + "`salesorder_item_id` links this " + "invoice line item back to its " + "source sales order line item, " + "enabling tracking of the " + "conversion process and " + "maintaining the relationship " + "between sales orders and " + "invoices.", + "example": " ", + "type": "string", + }, + "salesperson_name": { + "description": "Name of the salesperson. Max-length [200]", + "example": " ", + "type": "string", + }, + "send": { + "description": "Send the invoice to the contact person(s) " + "associated with the invoice. Allowed values " + "true and false.", + "type": "boolean", + }, + "shipping_address_id": { + "description": "Unique identifier of the " + "shipping address to be used " + "for this invoice. Use the " + "`shipping_address_id` returned " + "by the Addresses API for the " + "same customer and " + "organization. This address " + "appears on the invoice " + "document and is used for " + "delivery purposes. If omitted, " + "the customer's default " + "shipping address will be used.", + "example": "218500000000142014", + "type": "string", + }, + "shipping_charge": { + "description": "Additional shipping or delivery " + "charges applied to the invoice. " + "Must be specified as a fixed " + 'amount (e.g., "25.00"). This ' + "amount is added to the invoice " + "total and is subject to tax " + "calculation.", + "example": 0, + "type": "string", + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": 11149000000061052, + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption.", + "example": 11149000000061054, + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier of the tax to be applied " + "to this line item. Use the `tax_id` " + "returned by the Taxes API for the same " + "organization. This determines which tax " + "rate and rules are applied to the line " + "item, affecting the final tax calculation " + "and compliance reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the invoice " + ".Choose whether the contact falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier of the PDF template " + "linked to the invoice. Obtain this " + "value from the `template_id` field in " + "the response of the GET " + "`/invoices/templates` API for your " + "organization. Determines which " + "template is used for the invoice PDF.", + "example": 982000000000143, + "type": "string", + }, + "terms": { + "description": "Terms and conditions text to be displayed on " + "the invoice document. This field is used to " + "specify payment terms, delivery conditions, " + "return policies, or any other legal or " + "business terms that apply to this " + "transaction. The terms appear on the invoice " + "PDF and are legally binding.", + "example": "Terms & Conditions apply", + "type": "string", + }, + "time_entry_ids": { + "description": "Array of time entry IDs to be " + "billed on this line item. This " + "allows you to bill specific time " + "entries against this line item, " + "enabling detailed time-based " + "invoicing and project cost " + "tracking.", + "example": [], + "items": {"type": "string"}, + "type": "array", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "invoices. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["customer_id", "line_items"], + "type": "object", + }, + "UPDATEINVOICEBYCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Additional charge or credit amount " + "applied to the invoice total. This can " + "be used for rounding adjustments, " + "handling fees, or any other one-time " + "charges/credits. Positive values add to " + "the total, negative values reduce the " + "total. This amount is applied after tax " + "calculation and affects the final " + "invoice total.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Text description explaining " + "the reason for the " + "adjustment amount. This " + "description appears on the " + "invoice document to explain " + "why the adjustment was " + "applied. Common examples " + 'include "Rounding ' + 'adjustment", "Handling ' + 'fee", "Early payment ' + 'discount", or "Late payment ' + 'fee". This helps customers ' + "understand the purpose of " + "the adjustment.", + "example": " ", + "type": "string", + }, + "allow_partial_payments": { + "description": "Boolean flag that " + "determines whether " + "customers can make partial " + "payments against this " + "invoice. When " + "true, " + "customers can pay less than " + "the full invoice amount, " + "and the invoice will remain " + "open with a remaining " + "balance. When " + "false, " + "customers must pay the full " + "amount to complete the " + "invoice. This setting " + "affects payment processing " + "and invoice status " + "tracking.", + "example": True, + "type": "boolean", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used " + "to group Items (products, " + "services, or charges) together. " + "Refer the [link][2] for more " + "deails. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "cfdi_reference_type": { + "description": "Choose CFDI Reference Type. " + "Allowed " + "values:
return_of_merchandise, " + "substitution_previous_cfdi, " + "transfer_of_goods, " + "invoice_generated_from_order, " + "cfdi_for_advance.", + "example": "return_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "cfdi_usage": { + "description": "Choose CFDI Usage. Allowed " + "values:
acquisition_of_merchandise, " + "return_discount_bonus, " + "general_expense, " + "buildings, " + "furniture_office_equipment, " + "transport_equipment, " + "computer_equipmentdye_molds_tools, " + "telephone_communication, " + "satellite_communication, " + "other_machinery_equipment, " + "hospital_expense, " + "medical_expense_disability, " + "funeral_expense, " + "donation, " + "interest_mortage_loans, " + "contribution_sar, " + "medical_expense_insurance_pormium, " + "school_transportation_expense, " + "deposit_saving_account, " + "payment_educational_service, " + "no_tax_effect, " + "payment, " + "payroll.", + "example": "acquisition_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "currency_id": { + "description": "Unique identifier of the currency in " + "which the invoice will be created for " + "the customer. Use the `currency_id` " + "returned by the Currencies API for the " + "same organization. This sets the " + "currency for all monetary amounts on " + "the invoice; if it differs from the " + "organization's base currency, an " + "appropriate `exchange_rate` may be " + "required.", + "example": 982000000000190, + "type": "string", + }, + "custom_body": {"example": " ", "type": "string"}, + "custom_fields": { + "description": "Custom fields for an invoice.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "custom_subject": {"example": " ", "type": "string"}, + "customer_id": { + "description": "Unique identifier of the customer in " + "the current organization for whom this " + "invoice is created. Required when " + "creating an invoice. Use the " + "`customer_id` returned by the get " + "Customers API. Must belong to the " + "organization specified by the " + "`organization_id` parameter.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "The date on which the invoice is created. Use " + "the format yyyy-mm-dd (e.g., 2013-11-17). " + "This date appears on the invoice document and " + "is used for accounting purposes. When " + "searching invoices, supports variants: " + "date_start, " + "date_end, " + "date_before and " + "date_after.", + "example": "2013-11-17", + "type": "string", + }, + "discount": { + "description": "Discount amount applied to the invoice. " + "Can be specified as a percentage (e.g., " + "12.5 for 12.5%) — up to a maximum of 100% " + "— or as a fixed amount (e.g., 190 for " + "$190). The discount is applied based on " + "the `is_discount_before_tax` setting and " + "`discount_type` (entity_level or " + "item_level).", + "example": 0, + "format": "float", + "type": "number", + }, + "discount_type": { + "description": "Specifies the scope of discount " + "application. " + "entity_level applies " + "the discount to the entire invoice " + "total. item_level " + "applies the discount to individual " + "line items. This determines how the " + "discount amount is distributed " + "across the invoice items.", + "example": "item_level", + "type": "string", + }, + "due_date": { + "description": "The date by which payment is due for the " + "invoice. Use the format yyyy-mm-dd (e.g., " + "2013-12-03). This date is typically " + "calculated as invoice date + " + "payment_terms days, but can be overridden " + "with a custom date. When searching " + "invoices, supports variants: " + "due_date_start, " + "due_date_end, " + "due_date_before and " + "due_date_after.", + "example": "2013-12-03", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate used to convert " + "amounts from the invoice currency to " + "the organization's base currency. " + "Required when the invoice currency " + "differs from the organization's base " + "currency. For example, if base " + "currency is USD and invoice currency " + "is EUR, set the EUR to USD exchange " + "rate (e.g., 1.18). Default value is " + "1.0 when invoice currency matches " + "base currency.", + "example": 1, + "format": "float", + "type": "number", + }, + "expense_id": { + "description": "Unique identifier of the billable " + "expense to be converted to an invoice " + "line item. This converts a previously " + "recorded expense into a billable line " + "item on the invoice, enabling " + "expense-to-invoice conversion.", + "example": "460000000028080", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "invoice_number": { + "description": "Unique identifier or reference " + "number for the invoice. When " + "creating an invoice, this can be a " + "custom number (requires " + "`ignore_auto_number_generation=true` " + "query parameter) or left empty for " + "auto-generation. When searching " + "invoices, supports variants: " + "invoice_number_startswith " + "and " + "invoice_number_contains. " + "Maximum length is 100 characters. " + "Must be unique within the " + "organization.", + "example": "INV-00003", + "type": "string", + }, + "invoiced_estimate_id": { + "description": "Unique identifier of the " + "estimate that was converted " + "to create this invoice. Use " + "this field when creating an " + "invoice from an existing " + "estimate. The " + "`invoiced_estimate_id` links " + "this invoice back to its " + "source estimate, enabling " + "tracking of the conversion " + "process and maintaining the " + "relationship between " + "estimates and invoices.", + "example": " ", + "type": "string", + }, + "is_discount_before_tax": { + "description": "Boolean flag that " + "determines when the " + "discount is applied in " + "relation to tax " + "calculation. When " + "true, discount " + "is applied before tax " + "calculation (discount " + "reduces the taxable " + "amount). When " + "false, " + "discount is applied after " + "tax calculation (discount " + "reduces the final total " + "including tax). This " + "affects the final invoice " + "total and tax amounts.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Boolean flag that indicates " + "whether line item rates include " + "tax. When true, the " + "specified rates are inclusive of " + "tax (tax is already included in " + "the rate). When " + "false, the rates are " + "exclusive of tax (tax will be " + "added to the rate). This affects " + "how tax calculations are " + "performed on line items.", + "example": False, + "type": "boolean", + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "line_item_id": { + "description": "The line item id", + "example": 982000000567021, + "type": "string", + }, + "line_items": { + "items": { + "properties": { + "bcy_rate": { + "description": "Base " + "currency " + "rate " + "for " + "the " + "line " + "item. " + "This " + "is " + "the " + "rate " + "in " + "the " + "organization's " + "base " + "currency " + "before " + "any " + "currency " + "conversion. " + "Used " + "for " + "multi-currency " + "scenarios " + "where " + "the " + "invoice " + "currency " + "differs " + "from " + "the " + "base " + "currency.", + "example": 120, + "format": "float", + "type": "number", + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item " + "providing " + "additional " + "information " + "about " + "the " + "product " + "or " + "service. " + "This " + "description " + "appears " + "on " + "the " + "invoice " + "document " + "and " + "helps " + "customers " + "understand " + "what " + "they " + "are " + "being " + "charged " + "for. " + "Maximum " + "length " + "is " + "2000 " + "characters.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount " + "amount " + "applied " + "to " + "the " + "invoice. " + "Can " + "be " + "specified " + "as " + "a " + "percentage " + "(e.g., " + "12.5 " + "for " + "12.5%) " + "— " + "up " + "to " + "a " + "maximum " + "of " + "100% " + "— " + "or " + "as " + "a " + "fixed " + "amount " + "(e.g., " + "190 " + "for " + "$190). " + "The " + "discount " + "is " + "applied " + "based " + "on " + "the " + "`is_discount_before_tax` " + "setting " + "and " + "`discount_type` " + "(entity_level " + "or " + "item_level).", + "example": 0, + "format": "float", + "type": "number", + }, + "discount_amount": { + "description": "Fixed " + "discount " + "amount " + "applied " + "to " + "this " + "specific " + "line " + "item. " + "This " + "is " + "a " + "monetary " + "value " + "that " + "reduces " + "the " + "line " + "item " + "total. " + "The " + "discount " + "is " + "applied " + "after " + "the " + "rate " + "x " + "quantity " + "calculation " + "but " + "before " + "tax " + "calculation. " + "Can " + "be " + "used " + "for " + "line-item " + "specific " + "discounts " + "or " + "promotions.", + "example": 0, + "format": "float", + "type": "number", + }, + "expense_id": { + "description": "Unique " + "identifier " + "of " + "the " + "billable " + "expense " + "to " + "be " + "converted " + "to " + "an " + "invoice " + "line " + "item. " + "This " + "converts " + "a " + "previously " + "recorded " + "expense " + "into " + "a " + "billable " + "line " + "item " + "on " + "the " + "invoice, " + "enabling " + "expense-to-invoice " + "conversion.", + "example": "460000000028080", + "type": "string", + }, + "expense_receipt_name": {"type": "string"}, + "header_id": { + "description": "ID of the item header", + "example": 982000000000670, + "type": "string", + }, + "header_name": { + "description": "Name " + "of " + "the " + "item " + "header " + "or " + "category " + "that " + "groups " + "related " + "line " + "items " + "together. " + "This " + "is " + "used " + "for " + "organizational " + "purposes " + "to " + "categorize " + "and " + "group " + "similar " + "items " + "on " + "the " + "invoice. " + "For " + "example, " + '"Electronic ' + 'devices", ' + '"Office ' + 'supplies", ' + "or " + '"Professional ' + 'services". ' + "This " + "helps " + "in " + "organizing " + "and " + "presenting " + "line " + "items " + "in " + "a " + "structured " + "manner " + "on " + "the " + "invoice " + "document.", + "example": "Electronic devices", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "item " + "(product " + "or " + "service) " + "to " + "be " + "included " + "in " + "the " + "invoice " + "line " + "item. " + "Use " + "the " + "`item_id` " + "returned " + "by " + "the " + "Items " + "API " + "for " + "the " + "same " + "organization. " + "This " + "field " + "is " + "required " + "for " + "each " + "line " + "item " + "and " + "determines " + "the " + "item " + "details, " + "pricing, " + "and " + "tax " + "settings " + "that " + "will " + "be " + "applied " + "to " + "this " + "line " + "item.", + "example": 982000000030049, + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "number " + "for " + "this " + "line " + "item " + "on " + "the " + "invoice. " + "Determines " + "the " + "display " + "order " + "of " + "line " + "items " + "on " + "the " + "invoice " + "document. " + "Lower " + "numbers " + "appear " + "first. " + "Used " + "for " + "organizing " + "line " + "items " + "in " + "a " + "specific " + "sequence.", + "example": 1, + "type": "integer", + }, + "location_id": { + "description": "Unique " + "identifier " + "of " + "the " + "business " + "location " + "associated " + "with " + "the " + "invoice. " + "Use " + "the " + "`location_id` " + "returned " + "by " + "the " + "Locations " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "invoice " + "to " + "a " + "specific " + "business " + "location, " + "which " + "may " + "affect " + "tax " + "calculations, " + "reporting, " + "and " + "business " + "operations. " + "Required " + "if " + "your " + "organization " + "has " + "multiple " + "locations " + "configured.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "or " + "title " + "of " + "the " + "line " + "item " + "as it " + "appears " + "on " + "the " + "invoice. " + "Maximum " + "length " + "is " + "100 " + "characters. " + "Can " + "be " + "customized " + "to " + "override " + "the " + "default " + "item " + "name " + "from " + "the " + "item " + "catalog.", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "product " + "or " + "service " + "for " + "this " + "line " + "item. " + "Allowed " + "values: " + "goods " + "or " + "services. " + "For " + "South " + "Africa " + "Edition, " + "additional " + "values " + "include " + "capital_service " + "and " + "capital_goods. " + "This " + "classification " + "affects " + "tax " + "calculations, " + "reporting, " + "and " + "compliance " + "requirements " + "based " + "on " + "your " + "organization's " + "location " + "and " + "tax " + "regulations.", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "Unique " + "identifier " + "of " + "the " + "project " + "associated " + "with " + "this " + "line " + "item. " + "Use " + "the " + "`project_id` " + "returned " + "by " + "the " + "Projects " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "line " + "item " + "to " + "a " + "specific " + "project " + "for " + "project-based " + "billing, " + "time " + "tracking, " + "and " + "cost " + "allocation. " + "Optional " + "field " + "that " + "enables " + "project-specific " + "invoicing " + "and " + "reporting.", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "of " + "the " + "item " + "being " + "invoiced. " + "This " + "value " + "is " + "multiplied " + "by " + "the " + "rate " + "to " + "calculate " + "the " + "line " + "item " + "total. " + "Must " + "be " + "a " + "positive " + "number " + "greater " + "than " + "zero.", + "example": 1, + "format": "float", + "type": "number", + }, + "rate": { + "description": "Unit " + "rate " + "or " + "price " + "for " + "the " + "line " + "item " + "in " + "the " + "invoice " + "currency. " + "This " + "is " + "the " + "amount " + "charged " + "per " + "unit " + "of " + "the " + "item. " + "The " + "rate " + "is " + "used " + "to " + "calculate " + "the " + "line " + "item " + "total " + "(rate " + "x " + "quantity) " + "and " + "affects " + "the " + "final " + "invoice " + "amount.", + "example": 120, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tags": { + "description": "Array " + "of " + "reporting " + "tags " + "associated " + "with " + "this " + "line " + "item. " + "Each " + "tag " + "consists " + "of a " + "`tag_id` " + "and " + "`tag_option_id` " + "that " + "categorize " + "the " + "line " + "item " + "for " + "reporting " + "and " + "analytics " + "purposes. " + "Tags " + "help " + "organize " + "and " + "filter " + "data " + "across " + "reports " + "and " + "enable " + "detailed " + "business " + "intelligence " + "analysis.", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 982000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 982000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "tax " + "to " + "be " + "applied " + "to " + "this " + "line " + "item. " + "Use " + "the " + "`tax_id` " + "returned " + "by " + "the " + "Taxes " + "API " + "for " + "the " + "same " + "organization. " + "This " + "determines " + "which " + "tax " + "rate " + "and " + "rules " + "are " + "applied " + "to " + "the " + "line " + "item, " + "affecting " + "the " + "final " + "tax " + "calculation " + "and " + "compliance " + "reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_name": { + "description": "The name of the tax", + "example": "VAT", + "type": "string", + }, + "tax_percentage": { + "description": "The percentage of tax levied", + "example": 12.5, + "format": "float", + "type": "number", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tax_type": { + "description": "The type of the tax", + "example": "tax", + "type": "string", + }, + "tds_tax_id": { + "description": "ID of the TDS tax.", + "example": "982000000557012", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "time_entry_ids": { + "description": "Array " + "of " + "time " + "entry " + "IDs " + "to " + "be " + "billed " + "on " + "this " + "line " + "item. " + "This " + "allows " + "you " + "to " + "bill " + "specific " + "time " + "entries " + "against " + "this " + "line " + "item, " + "enabling " + "detailed " + "time-based " + "invoicing " + "and " + "project " + "cost " + "tracking.", + "example": [], + "items": {"type": "string"}, + "type": "array", + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "line " + "item " + "quantity. " + "Examples " + "include " + '"Nos" ' + "(Numbers), " + '"kgs" ' + "(Kilograms), " + '"hrs" ' + "(Hours), " + '"pcs" ' + "(Pieces), " + "etc. " + "This " + "helps " + "clarify " + "what " + "the " + "quantity " + "represents. " + "Maximum " + "length " + "is " + "100 " + "characters.", + "example": " ", + "type": "string", + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "E48", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "required": ["item_id"], + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier of the business " + "location associated with the invoice. " + "Use the `location_id` returned by the " + "Locations API for the same " + "organization. This links the invoice " + "to a specific business location, which " + "may affect tax calculations, " + "reporting, and business operations. " + "Required if your organization has " + "multiple locations configured.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional information or comments to be " + "displayed on the invoice document. This " + "field is typically used for thank you " + "messages, special instructions, or any other " + "information you want to communicate to the " + "customer. The notes appear on the invoice " + "PDF and are visible to customers", + "example": "Looking forward for your business.", + "type": "string", + }, + "payment_options": { + "description": "Payment options for the invoice, " + "online payment gateways and bank " + "accounts. Will be displayed in the " + "pdf.", + "properties": { + "payment_gateways": { + "description": "Online payment gateways through which payment can be made.", + "items": { + "properties": { + "additional_field1": { + "description": "Paypal " + "payment " + "method. " + "Allowed " + "Values: " + "standard " + "and " + "adaptive", + "example": "standard", + "type": "string", + }, + "configured": { + "description": "Boolean " + "check " + "to " + "see " + "if " + "a " + "payment " + "gateway " + "has " + "been " + "configured", + "example": True, + "type": "boolean", + }, + "gateway_name": { + "description": "Name " + "of " + "the " + "payment " + "gateway " + "associated " + "with " + "the " + "invoice. " + "E.g. " + "paypal, " + "stripe.Allowed " + "Values: " + "paypal, " + "authorize_net, " + "payflow_pro, " + "stripe, " + "2checkout " + "and " + "braintree", + "example": "paypal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "payment_terms": { + "description": "Number of days allowed for payment " + "(e.g., 15, 30, 60). This value " + "determines the invoice due date by " + "adding the specified number of days " + "to the invoice date. For example, if " + "invoice date is 2023-11-17 and " + "payment_terms is 15, the due_date " + "will be 2023-12-02. Maximum value is " + "100 days.", + "example": 15, + "type": "integer", + }, + "payment_terms_label": { + "description": "Custom label for payment terms " + "that appears on the invoice " + "document. Used to override the " + "default system-generated " + "label. For example, instead of " + 'the default "Net 15 Days", you ' + 'can set this to "Net 15", "Due ' + 'in 15 days", or any custom ' + "text. This label is displayed " + "to customers on the invoice. " + "Maximum length is 100 " + "characters.", + "example": "Net 15", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "reason": {"example": " ", "type": "string"}, + "recurring_invoice_id": { + "description": "Unique identifier of the " + "recurring invoice template " + "that generated this invoice. " + "Use this field when creating " + "an invoice from a recurring " + "invoice template. The " + "`recurring_invoice_id` links " + "this invoice back to its " + "source recurring invoice, " + "enabling tracking of which " + "template generated it and " + "maintaining the recurring " + "invoice relationship.", + "example": " ", + "type": "string", + }, + "reference_invoice_id": { + "description": "Associate the reference invoice.", + "example": "132738000000126013", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "External reference number or " + "identifier for the invoice, such " + "as a purchase order number, " + "contract number, or any other " + "business reference. When " + "converting from an estimate or " + "sales order, this field can be " + "used to reference the original " + "document number.", + "example": " ", + "type": "string", + }, + "salesorder_item_id": { + "description": "Unique identifier of the sales " + "order line item that is being " + "converted to this invoice line " + "item. Use this field when " + "creating an invoice from an " + "existing sales order. The " + "`salesorder_item_id` links this " + "invoice line item back to its " + "source sales order line item, " + "enabling tracking of the " + "conversion process and " + "maintaining the relationship " + "between sales orders and " + "invoices.", + "example": " ", + "type": "string", + }, + "salesperson_name": { + "description": "Name of the salesperson. Max-length [200]", + "example": " ", + "type": "string", + }, + "shipping_charge": { + "description": "Additional shipping or delivery " + "charges applied to the invoice. " + "Must be specified as a fixed " + 'amount (e.g., "25.00"). This ' + "amount is added to the invoice " + "total and is subject to tax " + "calculation.", + "example": 0, + "type": "string", + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": 11149000000061052, + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption.", + "example": 11149000000061054, + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier of the tax to be applied " + "to this line item. Use the `tax_id` " + "returned by the Taxes API for the same " + "organization. This determines which tax " + "rate and rules are applied to the line " + "item, affecting the final tax calculation " + "and compliance reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the invoice " + ".Choose whether the contact falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier of the PDF template " + "linked to the invoice. Obtain this " + "value from the `template_id` field in " + "the response of the GET " + "`/invoices/templates` API for your " + "organization. Determines which " + "template is used for the invoice PDF.", + "example": 982000000000143, + "type": "string", + }, + "terms": { + "description": "Terms and conditions text to be displayed on " + "the invoice document. This field is used to " + "specify payment terms, delivery conditions, " + "return policies, or any other legal or " + "business terms that apply to this " + "transaction. The terms appear on the invoice " + "PDF and are legally binding.", + "example": "Terms & Conditions apply", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "invoices. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["customer_id", "line_items"], + "type": "object", + }, + "UPDATEINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Additional charge or credit amount " + "applied to the invoice total. This can " + "be used for rounding adjustments, " + "handling fees, or any other one-time " + "charges/credits. Positive values add to " + "the total, negative values reduce the " + "total. This amount is applied after tax " + "calculation and affects the final " + "invoice total.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Text description explaining " + "the reason for the " + "adjustment amount. This " + "description appears on the " + "invoice document to explain " + "why the adjustment was " + "applied. Common examples " + 'include "Rounding ' + 'adjustment", "Handling ' + 'fee", "Early payment ' + 'discount", or "Late payment ' + 'fee". This helps customers ' + "understand the purpose of " + "the adjustment.", + "example": " ", + "type": "string", + }, + "allow_partial_payments": { + "description": "Boolean flag that " + "determines whether " + "customers can make partial " + "payments against this " + "invoice. When " + "true, " + "customers can pay less than " + "the full invoice amount, " + "and the invoice will remain " + "open with a remaining " + "balance. When " + "false, " + "customers must pay the full " + "amount to complete the " + "invoice. This setting " + "affects payment processing " + "and invoice status " + "tracking.", + "example": True, + "type": "boolean", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used " + "to group Items (products, " + "services, or charges) together. " + "Refer the [link][2] for more " + "deails. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "cfdi_reference_type": { + "description": "Choose CFDI Reference Type. " + "Allowed " + "values:
return_of_merchandise, " + "substitution_previous_cfdi, " + "transfer_of_goods, " + "invoice_generated_from_order, " + "cfdi_for_advance.", + "example": "return_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "cfdi_usage": { + "description": "Choose CFDI Usage. Allowed " + "values:
acquisition_of_merchandise, " + "return_discount_bonus, " + "general_expense, " + "buildings, " + "furniture_office_equipment, " + "transport_equipment, " + "computer_equipmentdye_molds_tools, " + "telephone_communication, " + "satellite_communication, " + "other_machinery_equipment, " + "hospital_expense, " + "medical_expense_disability, " + "funeral_expense, " + "donation, " + "interest_mortage_loans, " + "contribution_sar, " + "medical_expense_insurance_pormium, " + "school_transportation_expense, " + "deposit_saving_account, " + "payment_educational_service, " + "no_tax_effect, " + "payment, " + "payroll.", + "example": "acquisition_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "currency_id": { + "description": "Unique identifier of the currency in " + "which the invoice will be created for " + "the customer. Use the `currency_id` " + "returned by the Currencies API for the " + "same organization. This sets the " + "currency for all monetary amounts on " + "the invoice; if it differs from the " + "organization's base currency, an " + "appropriate `exchange_rate` may be " + "required.", + "example": 982000000000190, + "type": "string", + }, + "custom_body": {"example": " ", "type": "string"}, + "custom_fields": { + "description": "Custom fields for an invoice.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "custom_subject": {"example": " ", "type": "string"}, + "customer_id": { + "description": "Unique identifier of the customer in " + "the current organization for whom this " + "invoice is created. Required when " + "creating an invoice. Use the " + "`customer_id` returned by the get " + "Customers API. Must belong to the " + "organization specified by the " + "`organization_id` parameter.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "The date on which the invoice is created. Use " + "the format yyyy-mm-dd (e.g., 2013-11-17). " + "This date appears on the invoice document and " + "is used for accounting purposes. When " + "searching invoices, supports variants: " + "date_start, " + "date_end, " + "date_before and " + "date_after.", + "example": "2013-11-17", + "type": "string", + }, + "discount": { + "description": "Discount amount applied to the invoice. " + "Can be specified as a percentage (e.g., " + "12.5 for 12.5%) — up to a maximum of 100% " + "— or as a fixed amount (e.g., 190 for " + "$190). The discount is applied based on " + "the `is_discount_before_tax` setting and " + "`discount_type` (entity_level or " + "item_level).", + "example": 0, + "format": "float", + "type": "number", + }, + "discount_type": { + "description": "Specifies the scope of discount " + "application. " + "entity_level applies " + "the discount to the entire invoice " + "total. item_level " + "applies the discount to individual " + "line items. This determines how the " + "discount amount is distributed " + "across the invoice items.", + "example": "item_level", + "type": "string", + }, + "due_date": { + "description": "The date by which payment is due for the " + "invoice. Use the format yyyy-mm-dd (e.g., " + "2013-12-03). This date is typically " + "calculated as invoice date + " + "payment_terms days, but can be overridden " + "with a custom date. When searching " + "invoices, supports variants: " + "due_date_start, " + "due_date_end, " + "due_date_before and " + "due_date_after.", + "example": "2013-12-03", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate used to convert " + "amounts from the invoice currency to " + "the organization's base currency. " + "Required when the invoice currency " + "differs from the organization's base " + "currency. For example, if base " + "currency is USD and invoice currency " + "is EUR, set the EUR to USD exchange " + "rate (e.g., 1.18). Default value is " + "1.0 when invoice currency matches " + "base currency.", + "example": 1, + "format": "float", + "type": "number", + }, + "expense_id": { + "description": "Unique identifier of the billable " + "expense to be converted to an invoice " + "line item. This converts a previously " + "recorded expense into a billable line " + "item on the invoice, enabling " + "expense-to-invoice conversion.", + "example": "460000000028080", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "invoice_number": { + "description": "Unique identifier or reference " + "number for the invoice. When " + "creating an invoice, this can be a " + "custom number (requires " + "`ignore_auto_number_generation=true` " + "query parameter) or left empty for " + "auto-generation. When searching " + "invoices, supports variants: " + "invoice_number_startswith " + "and " + "invoice_number_contains. " + "Maximum length is 100 characters. " + "Must be unique within the " + "organization.", + "example": "INV-00003", + "type": "string", + }, + "invoiced_estimate_id": { + "description": "Unique identifier of the " + "estimate that was converted " + "to create this invoice. Use " + "this field when creating an " + "invoice from an existing " + "estimate. The " + "`invoiced_estimate_id` links " + "this invoice back to its " + "source estimate, enabling " + "tracking of the conversion " + "process and maintaining the " + "relationship between " + "estimates and invoices.", + "example": " ", + "type": "string", + }, + "is_discount_before_tax": { + "description": "Boolean flag that " + "determines when the " + "discount is applied in " + "relation to tax " + "calculation. When " + "true, discount " + "is applied before tax " + "calculation (discount " + "reduces the taxable " + "amount). When " + "false, " + "discount is applied after " + "tax calculation (discount " + "reduces the final total " + "including tax). This " + "affects the final invoice " + "total and tax amounts.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Boolean flag that indicates " + "whether line item rates include " + "tax. When true, the " + "specified rates are inclusive of " + "tax (tax is already included in " + "the rate). When " + "false, the rates are " + "exclusive of tax (tax will be " + "added to the rate). This affects " + "how tax calculations are " + "performed on line items.", + "example": False, + "type": "boolean", + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "line_item_id": { + "description": "The line item id", + "example": 982000000567021, + "type": "string", + }, + "line_items": { + "items": { + "properties": { + "bcy_rate": { + "description": "Base " + "currency " + "rate " + "for " + "the " + "line " + "item. " + "This " + "is " + "the " + "rate " + "in " + "the " + "organization's " + "base " + "currency " + "before " + "any " + "currency " + "conversion. " + "Used " + "for " + "multi-currency " + "scenarios " + "where " + "the " + "invoice " + "currency " + "differs " + "from " + "the " + "base " + "currency.", + "example": 120, + "format": "float", + "type": "number", + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item " + "providing " + "additional " + "information " + "about " + "the " + "product " + "or " + "service. " + "This " + "description " + "appears " + "on " + "the " + "invoice " + "document " + "and " + "helps " + "customers " + "understand " + "what " + "they " + "are " + "being " + "charged " + "for. " + "Maximum " + "length " + "is " + "2000 " + "characters.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount " + "amount " + "applied " + "to " + "the " + "invoice. " + "Can " + "be " + "specified " + "as " + "a " + "percentage " + "(e.g., " + "12.5 " + "for " + "12.5%) " + "— " + "up " + "to " + "a " + "maximum " + "of " + "100% " + "— " + "or " + "as " + "a " + "fixed " + "amount " + "(e.g., " + "190 " + "for " + "$190). " + "The " + "discount " + "is " + "applied " + "based " + "on " + "the " + "`is_discount_before_tax` " + "setting " + "and " + "`discount_type` " + "(entity_level " + "or " + "item_level).", + "example": 0, + "format": "float", + "type": "number", + }, + "discount_amount": { + "description": "Fixed " + "discount " + "amount " + "applied " + "to " + "this " + "specific " + "line " + "item. " + "This " + "is " + "a " + "monetary " + "value " + "that " + "reduces " + "the " + "line " + "item " + "total. " + "The " + "discount " + "is " + "applied " + "after " + "the " + "rate " + "x " + "quantity " + "calculation " + "but " + "before " + "tax " + "calculation. " + "Can " + "be " + "used " + "for " + "line-item " + "specific " + "discounts " + "or " + "promotions.", + "example": 0, + "format": "float", + "type": "number", + }, + "expense_id": { + "description": "Unique " + "identifier " + "of " + "the " + "billable " + "expense " + "to " + "be " + "converted " + "to " + "an " + "invoice " + "line " + "item. " + "This " + "converts " + "a " + "previously " + "recorded " + "expense " + "into " + "a " + "billable " + "line " + "item " + "on " + "the " + "invoice, " + "enabling " + "expense-to-invoice " + "conversion.", + "example": "460000000028080", + "type": "string", + }, + "expense_receipt_name": {"type": "string"}, + "header_id": { + "description": "ID of the item header", + "example": 982000000000670, + "type": "string", + }, + "header_name": { + "description": "Name " + "of " + "the " + "item " + "header " + "or " + "category " + "that " + "groups " + "related " + "line " + "items " + "together. " + "This " + "is " + "used " + "for " + "organizational " + "purposes " + "to " + "categorize " + "and " + "group " + "similar " + "items " + "on " + "the " + "invoice. " + "For " + "example, " + '"Electronic ' + 'devices", ' + '"Office ' + 'supplies", ' + "or " + '"Professional ' + 'services". ' + "This " + "helps " + "in " + "organizing " + "and " + "presenting " + "line " + "items " + "in " + "a " + "structured " + "manner " + "on " + "the " + "invoice " + "document.", + "example": "Electronic devices", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "item " + "(product " + "or " + "service) " + "to " + "be " + "included " + "in " + "the " + "invoice " + "line " + "item. " + "Use " + "the " + "`item_id` " + "returned " + "by " + "the " + "Items " + "API " + "for " + "the " + "same " + "organization. " + "This " + "field " + "is " + "required " + "for " + "each " + "line " + "item " + "and " + "determines " + "the " + "item " + "details, " + "pricing, " + "and " + "tax " + "settings " + "that " + "will " + "be " + "applied " + "to " + "this " + "line " + "item.", + "example": 982000000030049, + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "number " + "for " + "this " + "line " + "item " + "on " + "the " + "invoice. " + "Determines " + "the " + "display " + "order " + "of " + "line " + "items " + "on " + "the " + "invoice " + "document. " + "Lower " + "numbers " + "appear " + "first. " + "Used " + "for " + "organizing " + "line " + "items " + "in " + "a " + "specific " + "sequence.", + "example": 1, + "type": "integer", + }, + "location_id": { + "description": "Unique " + "identifier " + "of " + "the " + "business " + "location " + "associated " + "with " + "the " + "invoice. " + "Use " + "the " + "`location_id` " + "returned " + "by " + "the " + "Locations " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "invoice " + "to " + "a " + "specific " + "business " + "location, " + "which " + "may " + "affect " + "tax " + "calculations, " + "reporting, " + "and " + "business " + "operations. " + "Required " + "if " + "your " + "organization " + "has " + "multiple " + "locations " + "configured.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "or " + "title " + "of " + "the " + "line " + "item " + "as it " + "appears " + "on " + "the " + "invoice. " + "Maximum " + "length " + "is " + "100 " + "characters. " + "Can " + "be " + "customized " + "to " + "override " + "the " + "default " + "item " + "name " + "from " + "the " + "item " + "catalog.", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Type " + "of " + "product " + "or " + "service " + "for " + "this " + "line " + "item. " + "Allowed " + "values: " + "goods " + "or " + "services. " + "For " + "South " + "Africa " + "Edition, " + "additional " + "values " + "include " + "capital_service " + "and " + "capital_goods. " + "This " + "classification " + "affects " + "tax " + "calculations, " + "reporting, " + "and " + "compliance " + "requirements " + "based " + "on " + "your " + "organization's " + "location " + "and " + "tax " + "regulations.", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "Unique " + "identifier " + "of " + "the " + "project " + "associated " + "with " + "this " + "line " + "item. " + "Use " + "the " + "`project_id` " + "returned " + "by " + "the " + "Projects " + "API " + "for " + "the " + "same " + "organization. " + "This " + "links " + "the " + "line " + "item " + "to " + "a " + "specific " + "project " + "for " + "project-based " + "billing, " + "time " + "tracking, " + "and " + "cost " + "allocation. " + "Optional " + "field " + "that " + "enables " + "project-specific " + "invoicing " + "and " + "reporting.", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "of " + "the " + "item " + "being " + "invoiced. " + "This " + "value " + "is " + "multiplied " + "by " + "the " + "rate " + "to " + "calculate " + "the " + "line " + "item " + "total. " + "Must " + "be " + "a " + "positive " + "number " + "greater " + "than " + "zero.", + "example": 1, + "format": "float", + "type": "number", + }, + "rate": { + "description": "Unit " + "rate " + "or " + "price " + "for " + "the " + "line " + "item " + "in " + "the " + "invoice " + "currency. " + "This " + "is " + "the " + "amount " + "charged " + "per " + "unit " + "of " + "the " + "item. " + "The " + "rate " + "is " + "used " + "to " + "calculate " + "the " + "line " + "item " + "total " + "(rate " + "x " + "quantity) " + "and " + "affects " + "the " + "final " + "invoice " + "amount.", + "example": 120, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tags": { + "description": "Array " + "of " + "reporting " + "tags " + "associated " + "with " + "this " + "line " + "item. " + "Each " + "tag " + "consists " + "of a " + "`tag_id` " + "and " + "`tag_option_id` " + "that " + "categorize " + "the " + "line " + "item " + "for " + "reporting " + "and " + "analytics " + "purposes. " + "Tags " + "help " + "organize " + "and " + "filter " + "data " + "across " + "reports " + "and " + "enable " + "detailed " + "business " + "intelligence " + "analysis.", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 982000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 982000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "tax " + "to " + "be " + "applied " + "to " + "this " + "line " + "item. " + "Use " + "the " + "`tax_id` " + "returned " + "by " + "the " + "Taxes " + "API " + "for " + "the " + "same " + "organization. " + "This " + "determines " + "which " + "tax " + "rate " + "and " + "rules " + "are " + "applied " + "to " + "the " + "line " + "item, " + "affecting " + "the " + "final " + "tax " + "calculation " + "and " + "compliance " + "reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_name": { + "description": "The name of the tax", + "example": "VAT", + "type": "string", + }, + "tax_percentage": { + "description": "The percentage of tax levied", + "example": 12.5, + "format": "float", + "type": "number", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tax_type": { + "description": "The type of the tax", + "example": "tax", + "type": "string", + }, + "tds_tax_id": { + "description": "ID of the TDS tax.", + "example": "982000000557012", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "time_entry_ids": { + "description": "Array " + "of " + "time " + "entry " + "IDs " + "to " + "be " + "billed " + "on " + "this " + "line " + "item. " + "This " + "allows " + "you " + "to " + "bill " + "specific " + "time " + "entries " + "against " + "this " + "line " + "item, " + "enabling " + "detailed " + "time-based " + "invoicing " + "and " + "project " + "cost " + "tracking.", + "example": [], + "items": {"type": "string"}, + "type": "array", + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "line " + "item " + "quantity. " + "Examples " + "include " + '"Nos" ' + "(Numbers), " + '"kgs" ' + "(Kilograms), " + '"hrs" ' + "(Hours), " + '"pcs" ' + "(Pieces), " + "etc. " + "This " + "helps " + "clarify " + "what " + "the " + "quantity " + "represents. " + "Maximum " + "length " + "is " + "100 " + "characters.", + "example": " ", + "type": "string", + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "E48", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "required": ["item_id"], + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier of the business " + "location associated with the invoice. " + "Use the `location_id` returned by the " + "Locations API for the same " + "organization. This links the invoice " + "to a specific business location, which " + "may affect tax calculations, " + "reporting, and business operations. " + "Required if your organization has " + "multiple locations configured.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional information or comments to be " + "displayed on the invoice document. This " + "field is typically used for thank you " + "messages, special instructions, or any other " + "information you want to communicate to the " + "customer. The notes appear on the invoice " + "PDF and are visible to customers", + "example": "Looking forward for your business.", + "type": "string", + }, + "payment_options": { + "description": "Payment options for the invoice, " + "online payment gateways and bank " + "accounts. Will be displayed in the " + "pdf.", + "properties": { + "payment_gateways": { + "description": "Online payment gateways through which payment can be made.", + "items": { + "properties": { + "additional_field1": { + "description": "Paypal " + "payment " + "method. " + "Allowed " + "Values: " + "standard " + "and " + "adaptive", + "example": "standard", + "type": "string", + }, + "configured": { + "description": "Boolean " + "check " + "to " + "see " + "if " + "a " + "payment " + "gateway " + "has " + "been " + "configured", + "example": True, + "type": "boolean", + }, + "gateway_name": { + "description": "Name " + "of " + "the " + "payment " + "gateway " + "associated " + "with " + "the " + "invoice. " + "E.g. " + "paypal, " + "stripe.Allowed " + "Values: " + "paypal, " + "authorize_net, " + "payflow_pro, " + "stripe, " + "2checkout " + "and " + "braintree", + "example": "paypal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "payment_terms": { + "description": "Number of days allowed for payment " + "(e.g., 15, 30, 60). This value " + "determines the invoice due date by " + "adding the specified number of days " + "to the invoice date. For example, if " + "invoice date is 2023-11-17 and " + "payment_terms is 15, the due_date " + "will be 2023-12-02. Maximum value is " + "100 days.", + "example": 15, + "type": "integer", + }, + "payment_terms_label": { + "description": "Custom label for payment terms " + "that appears on the invoice " + "document. Used to override the " + "default system-generated " + "label. For example, instead of " + 'the default "Net 15 Days", you ' + 'can set this to "Net 15", "Due ' + 'in 15 days", or any custom ' + "text. This label is displayed " + "to customers on the invoice. " + "Maximum length is 100 " + "characters.", + "example": "Net 15", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "reason": {"example": " ", "type": "string"}, + "recurring_invoice_id": { + "description": "Unique identifier of the " + "recurring invoice template " + "that generated this invoice. " + "Use this field when creating " + "an invoice from a recurring " + "invoice template. The " + "`recurring_invoice_id` links " + "this invoice back to its " + "source recurring invoice, " + "enabling tracking of which " + "template generated it and " + "maintaining the recurring " + "invoice relationship.", + "example": " ", + "type": "string", + }, + "reference_invoice_id": { + "description": "Associate the reference invoice.", + "example": "132738000000126013", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "External reference number or " + "identifier for the invoice, such " + "as a purchase order number, " + "contract number, or any other " + "business reference. When " + "converting from an estimate or " + "sales order, this field can be " + "used to reference the original " + "document number.", + "example": " ", + "type": "string", + }, + "salesorder_item_id": { + "description": "Unique identifier of the sales " + "order line item that is being " + "converted to this invoice line " + "item. Use this field when " + "creating an invoice from an " + "existing sales order. The " + "`salesorder_item_id` links this " + "invoice line item back to its " + "source sales order line item, " + "enabling tracking of the " + "conversion process and " + "maintaining the relationship " + "between sales orders and " + "invoices.", + "example": " ", + "type": "string", + }, + "salesperson_name": { + "description": "Name of the salesperson. Max-length [200]", + "example": " ", + "type": "string", + }, + "shipping_charge": { + "description": "Additional shipping or delivery " + "charges applied to the invoice. " + "Must be specified as a fixed " + 'amount (e.g., "25.00"). This ' + "amount is added to the invoice " + "total and is subject to tax " + "calculation.", + "example": 0, + "type": "string", + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": 11149000000061052, + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption.", + "example": 11149000000061054, + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique identifier of the tax to be applied " + "to this line item. Use the `tax_id` " + "returned by the Taxes API for the same " + "organization. This determines which tax " + "rate and rules are applied to the line " + "item, affecting the final tax calculation " + "and compliance reporting.", + "example": 982000000557028, + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the invoice " + ".Choose whether the contact falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier of the PDF template " + "linked to the invoice. Obtain this " + "value from the `template_id` field in " + "the response of the GET " + "`/invoices/templates` API for your " + "organization. Determines which " + "template is used for the invoice PDF.", + "example": 982000000000143, + "type": "string", + }, + "terms": { + "description": "Terms and conditions text to be displayed on " + "the invoice document. This field is used to " + "specify payment terms, delivery conditions, " + "return policies, or any other legal or " + "business terms that apply to this " + "transaction. The terms appear on the invoice " + "PDF and are legally binding.", + "example": "Terms & Conditions apply", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "invoices. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["customer_id", "line_items"], + "type": "object", + }, + "SENDINVOICESEMAIL_REQUEST_BODY_SCHEMA": { + "properties": { + "contacts": { + "description": "Contacts for whom email or snail mail has to be sent.", + "items": { + "properties": { + "contact_id": { + "description": "ID " + "of " + "the " + "Customer " + "and " + "mail " + "will " + "be " + "sent " + "to " + "invoice " + "associated " + "contact " + "persons", + "example": 460000000026049, + "type": "string", + }, + "email": { + "description": "the boolean check for Email", + "example": True, + "type": "boolean", + }, + "snail_mail": { + "description": "the boolean check for snail mail", + "example": False, + "type": "boolean", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "required": ["contact_id", "email", "snail_mail"], + "type": "object", + }, + "ASSOCIATEINVOICEWITHSALESORDER_REQUEST_BODY_SCHEMA": { + "properties": { + "invoice_ids": { + "description": "Array of invoice IDs to be associated with a sales order.", + "example": ["982000000567114", "982000000567115", "982000000567116"], + "items": {"type": "string"}, + "type": "array", + } + }, + "required": ["invoice_ids"], + "type": "object", + }, + "SENDINVOICEEMAIL_REQUEST_BODY_SCHEMA": { + "properties": { + "body": { + "description": "The body of the mail", + "example": "Dear Customer,



Thanks for " + "your business.



The " + "invoice INV-00001 is attached with this email. " + "You can choose the easy way out and pay online for this invoice. " + "

Here's an overview of the invoice for " + "your reference.



Invoice " + "Overview:

Invoice : " + "INV-00001

Date : 05 Aug " + "2013

Amount : $541.82 " + "



It was great working with you. " + "Looking forward to working with you " + "again.


\\nRegards
\\nZillium " + 'Inc
\\n",', + "type": "string", + }, + "cc_mail_ids": { + "description": "Array of email address of the recipients to be cced.", + "example": ["peterparker@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + "from_address_id": { + "description": "From email address id", + "example": 2000000011993, + "type": "string", + }, + "send_from_org_email_id": { + "description": "Boolean to trigger the email from the organization's email address", + "example": False, + "type": "boolean", + }, + "subject": { + "description": "The subject of the mail", + "example": "Invoice from Zillium Inc (Invoice#: INV-00001)", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email address of the recipients.", + "example": ["willsmith@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids"], + "type": "object", + }, + "REMINDCUSTOMERINVOICEPAYMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "body": { + "description": "The body of the mail", + "example": "
Dear Mr. Sujin, 

You might have " + "missed the payment date and the invoice is now " + "overdue " + "by 1 days.

----------------------------------------------------------------------------------------

Invoice# " + ": INV-000004

Dated : 23 Dec " + "2016
----------------------------------------------------------------------------------------
 Due " + "Date         :   23 " + "Dec 2016
 Amount     " + "      : " + "  $139.65
----------------------------------------------------------------------------------------

Not " + "to worry at all ! View your invoice " + "and take the easy way out by making an online payment.

If you have already ' + "paid, please accept our apologies and kindly " + "ignore this payment " + "reminder.


Regards,

David " + "Sujin
Zillium Inc


", + "type": "string", + }, + "cc_mail_ids": { + "description": "Array of email address of the recipients to be cced.", + "example": ["peterparker@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + "send_from_org_email_id": { + "description": "Boolean to trigger the email from the organization's email address", + "example": False, + "type": "boolean", + }, + "subject": { + "description": "The subject of the mail", + "example": "Invoice from Zillium Inc (Invoice#: INV-00001)", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email address of the recipients.", + "example": ["willsmith@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["cc_mail_ids"], + "type": "object", + }, + "MODIFYINVOICEADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Billing address for the invoice", + "example": "B-1104, 11F, \n" + "Horizon International Tower, \n" + "No. 6, ZhiChun Road, HaiDian District", + "type": "string", + }, + "city": { + "description": "City of the customer's billing address.", + "example": "Beijing", + "type": "string", + }, + "country": { + "description": "Country of the customer's billing address.", + "type": "string", + }, + "fax": { + "description": "Customer's fax number.", + "example": "+86-10-82637827", + "type": "string", + }, + "state": { + "description": "State of the customer's billing address.", + "example": "Beijing", + "type": "string", + }, + "zip": { + "description": "Zip code of the customer's billing address.", + "example": 1000881, + "type": "string", + }, + }, + "type": "object", + }, + "UPDATEINVOICESHIPPINGADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Shipping address for the invoice", + "example": "4900 Hopyard Rd, Suit 310", + "type": "string", + }, + "city": { + "description": "City of the customer's Shipping address.", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country of the customer's Shipping address.", + "example": "USA", + "type": "string", + }, + "fax": { + "description": "Customer's fax number.", + "example": "+1-925-924-9600", + "type": "string", + }, + "state": { + "description": "State of the customer's Shipping address.", + "example": "CA", + "type": "string", + }, + "street2": {"example": "McMillan Avenue", "type": "string"}, + "zip": { + "description": "Zip code of the customer's Shipping address.", + "example": 945881, + "type": "string", + }, + }, + "type": "object", + }, + "APPLYCREDITSTOINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "apply_creditnotes": { + "items": { + "properties": { + "amount_applied": { + "description": "The applied amount to the creditnote", + "example": 12.2, + "format": "float", + "type": "number", + }, + "creditnote_id": { + "description": "ID of the creditnote", + "example": 982000000567134, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "invoice_payments": { + "items": { + "properties": { + "amount_applied": { + "description": "The applied amount to the creditnote", + "example": 12.2, + "format": "float", + "type": "number", + }, + "payment_id": { + "description": "ID of the payment", + "example": 982000000567190, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "required": ["invoice_payments", "apply_creditnotes"], + "type": "object", + }, + "UPDATEINVOICECUSTOMFIELDS_REQUEST_BODY_SCHEMA": { + "description": "Custom fields for an invoice.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "ADDINVOICECOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "The description of the comment.", + "example": "This is a comment.", + "type": "string", + }, + "payment_expected_date": { + "description": "The expected date of payment", + "example": " ", + "type": "string", + }, + "show_comment_to_clients": { + "description": "Boolean to check if the comment to be shown to the clients", + "example": True, + "type": "boolean", + }, + }, + "type": "object", + }, + "UPDATEINVOICECOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "The description of the comment.", + "example": "This is a comment.", + "type": "string", + }, + "show_comment_to_clients": { + "description": "Boolean to check if the comment to be shown to the clients", + "example": True, + "type": "boolean", + }, + }, + "type": "object", + }, + "CREATENEWZOHOITEM_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the account to which the item has to be associated with.", + "example": " ", + "type": "string", + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used " + "to group Items (products, " + "services, or charges) together. " + "Max-length [25]", + "example": 982000000037049, + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "example": 982000000037049, + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "custom_fields": { + "description": "Custom fields for an item.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Description for the item. Max-length [2000]", + "example": "500GB", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN Code", + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "inventory_account_id": { + "description": "ID of the stock account to " + "which the item has to be " + "associated with. Mandatory, " + "if item_type is inventory.", + "example": " ", + "type": "string", + }, + "is_taxable": { + "description": "Boolean to track the taxability of the item.", + "type": "boolean", + "x-node_available_in": ["in", "us", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_tax_preferences": { + "items": { + "properties": { + "tax_id": { + "description": "ID of the tax to be associated to the item.", + "example": 982000000037049, + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_specification": { + "description": "Set whether the tax type is intra/interstate", + "example": "intra", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "item_type": { + "description": "Type of the item. Allowed values: " + "sales,purchases,sales_and_purchases " + "and inventory. Default " + "value will be sales.", + "example": " ", + "type": "string", + }, + "locations": { + "items": { + "properties": { + "initial_stock": { + "description": "Opening stock of the item.", + "example": " ", + "type": "string", + }, + "initial_stock_rate": { + "description": "Unit price of the opening stock.", + "example": " ", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "Name of the item. Max-length [100]", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Specify the type of an item. Allowed " + "values:
goods or " + " service or " + "digital_service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "example": "goods", + "type": "string", + }, + "purchase_account_id": { + "description": "ID of the COGS account to " + "which the item has to be " + "associated with. Mandatory, if " + "item_type is purchase / sales " + "and purchase / inventory.", + "example": " ", + "type": "string", + }, + "purchase_description": { + "description": "Purchase description for the item.", + "example": " ", + "type": "string", + }, + "purchase_rate": { + "description": "Purchase price of the item.", + "example": " ", + "type": "string", + }, + "purchase_tax_exemption_id": { + "description": "ID of the purchase tax " + "exemption. Mandatory, if " + "is_taxable " + "is false.", + "type": "string", + "x-node_available_in": ["ke", "za"], + "x-node_unavailable_in": [], + }, + "purchase_tax_rule_id": { + "description": "Id of the purchase tax rule", + "example": 127919000000106780, + "type": "string", + "x-node_available_in": ["mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "rate": { + "description": "Price of the item.", + "example": 120, + "format": "double", + "type": "number", + }, + "reorder_level": { + "description": "Reorder level of the item.", + "example": " ", + "type": "string", + }, + "sales_tax_rule_id": { + "description": "Id of the sales tax rule", + "example": 127919000000106780, + "type": "string", + "x-node_available_in": ["mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "sat_item_key_code": { + "description": "Add SAT Item Key Code for your " + "goods/services. Download the CFDI Catalogs.", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "sku": { + "description": "SKU value of item,should be unique throughout the product", + "example": "s12345", + "type": "string", + }, + "tax_exemption_id": { + "description": "ID of the tax exemption. " + "Mandatory, if " + "is_taxable is false.", + "type": "string", + "x-node_available_in": ["in", "us", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax to be associated to the item.", + "example": 982000000037049, + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "in"], + }, + "tax_percentage": { + "description": "Percent of the tax.", + "example": "70%", + "type": "string", + }, + "unitkey_code": { + "description": "Add Unit Key Code for your " + "goods/services. Download the CFDI Catalogs.", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "vendor_id": {"description": "Preferred vendor ID.", "example": " ", "type": "string"}, + }, + "required": ["name", "rate"], + "type": "object", + }, + "UPDATEITEMVIACUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the account to which the item has to be associated with.", + "example": " ", + "type": "string", + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used " + "to group Items (products, " + "services, or charges) together. " + "Max-length [25]", + "example": 982000000037049, + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "example": 982000000037049, + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "custom_fields": { + "description": "Custom fields for an item.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Description for the item. Max-length [2000]", + "example": "500GB", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN Code", + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "inventory_account_id": { + "description": "ID of the stock account to " + "which the item has to be " + "associated with. Mandatory, " + "if item_type is inventory.", + "example": " ", + "type": "string", + }, + "is_taxable": { + "description": "Boolean to track the taxability of the item.", + "type": "boolean", + "x-node_available_in": ["in", "us", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_tax_preferences": { + "items": { + "properties": { + "tax_id": { + "description": "ID of the tax to be associated to the item.", + "example": 982000000037049, + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_specification": { + "description": "Set whether the tax type is intra/interstate", + "example": "intra", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "item_type": { + "description": "Type of the item. Allowed values: " + "sales,purchases,sales_and_purchases " + "and inventory. Default " + "value will be sales.", + "example": " ", + "type": "string", + }, + "locations": { + "items": { + "properties": { + "initial_stock": { + "description": "Opening stock of the item.", + "example": " ", + "type": "string", + }, + "initial_stock_rate": { + "description": "Unit price of the opening stock.", + "example": " ", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "Name of the item. Max-length [100]", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Specify the type of an item. Allowed " + "values:
goods or " + " service or " + "digital_service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "example": "goods", + "type": "string", + }, + "purchase_account_id": { + "description": "ID of the COGS account to " + "which the item has to be " + "associated with. Mandatory, if " + "item_type is purchase / sales " + "and purchase / inventory.", + "example": " ", + "type": "string", + }, + "purchase_description": { + "description": "Purchase description for the item.", + "example": " ", + "type": "string", + }, + "purchase_rate": { + "description": "Purchase price of the item.", + "example": " ", + "type": "string", + }, + "purchase_tax_exemption_id": { + "description": "ID of the purchase tax " + "exemption. Mandatory, if " + "is_taxable " + "is false.", + "type": "string", + "x-node_available_in": ["ke", "za"], + "x-node_unavailable_in": [], + }, + "purchase_tax_rule_id": { + "description": "Id of the purchase tax rule", + "example": 127919000000106780, + "type": "string", + "x-node_available_in": ["mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "rate": { + "description": "Price of the item.", + "example": 120, + "format": "double", + "type": "number", + }, + "reorder_level": { + "description": "Reorder level of the item.", + "example": " ", + "type": "string", + }, + "sales_tax_rule_id": { + "description": "Id of the sales tax rule", + "example": 127919000000106780, + "type": "string", + "x-node_available_in": ["mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "sat_item_key_code": { + "description": "Add SAT Item Key Code for your " + "goods/services. Download the CFDI Catalogs.", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "sku": { + "description": "SKU value of item,should be unique throughout the product", + "example": "s12345", + "type": "string", + }, + "tax_exemption_id": { + "description": "ID of the tax exemption. " + "Mandatory, if " + "is_taxable is false.", + "type": "string", + "x-node_available_in": ["in", "us", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax to be associated to the item.", + "example": 982000000037049, + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "in"], + }, + "tax_percentage": { + "description": "Percent of the tax.", + "example": "70%", + "type": "string", + }, + "unitkey_code": { + "description": "Add Unit Key Code for your " + "goods/services. Download the CFDI Catalogs.", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "vendor_id": {"description": "Preferred vendor ID.", "example": " ", "type": "string"}, + }, + "required": ["name", "rate"], + "type": "object", + }, + "UPDATEZOHOITEMDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "ID of the account to which the item has to be associated with.", + "example": " ", + "type": "string", + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used " + "to group Items (products, " + "services, or charges) together. " + "Max-length [25]", + "example": 982000000037049, + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "example": 982000000037049, + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "custom_fields": { + "description": "Custom fields for an item.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Description for the item. Max-length [2000]", + "example": "500GB", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN Code", + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "inventory_account_id": { + "description": "ID of the stock account to " + "which the item has to be " + "associated with. Mandatory, " + "if item_type is inventory.", + "example": " ", + "type": "string", + }, + "is_taxable": { + "description": "Boolean to track the taxability of the item.", + "type": "boolean", + "x-node_available_in": ["in", "us", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_tax_preferences": { + "items": { + "properties": { + "tax_id": { + "description": "ID of the tax to be associated to the item.", + "example": 982000000037049, + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_specification": { + "description": "Set whether the tax type is intra/interstate", + "example": "intra", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "item_type": { + "description": "Type of the item. Allowed values: " + "sales,purchases,sales_and_purchases " + "and inventory. Default " + "value will be sales.", + "example": " ", + "type": "string", + }, + "locations": { + "items": { + "properties": { + "initial_stock": { + "description": "Opening stock of the item.", + "example": " ", + "type": "string", + }, + "initial_stock_rate": { + "description": "Unit price of the opening stock.", + "example": " ", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "Name of the item. Max-length [100]", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Specify the type of an item. Allowed " + "values:
goods or " + " service or " + "digital_service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "example": "goods", + "type": "string", + }, + "purchase_account_id": { + "description": "ID of the COGS account to " + "which the item has to be " + "associated with. Mandatory, if " + "item_type is purchase / sales " + "and purchase / inventory.", + "example": " ", + "type": "string", + }, + "purchase_description": { + "description": "Purchase description for the item.", + "example": " ", + "type": "string", + }, + "purchase_rate": { + "description": "Purchase price of the item.", + "example": " ", + "type": "string", + }, + "purchase_tax_exemption_id": { + "description": "ID of the purchase tax " + "exemption. Mandatory, if " + "is_taxable " + "is false.", + "type": "string", + "x-node_available_in": ["ke", "za"], + "x-node_unavailable_in": [], + }, + "purchase_tax_rule_id": { + "description": "Id of the purchase tax rule", + "example": 127919000000106780, + "type": "string", + "x-node_available_in": ["mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "rate": { + "description": "Price of the item.", + "example": 120, + "format": "double", + "type": "number", + }, + "reorder_level": { + "description": "Reorder level of the item.", + "example": " ", + "type": "string", + }, + "sales_tax_rule_id": { + "description": "Id of the sales tax rule", + "example": 127919000000106780, + "type": "string", + "x-node_available_in": ["mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "sat_item_key_code": { + "description": "Add SAT Item Key Code for your " + "goods/services. Download the CFDI Catalogs.", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "sku": { + "description": "SKU value of item,should be unique throughout the product", + "example": "s12345", + "type": "string", + }, + "tax_exemption_id": { + "description": "ID of the tax exemption. " + "Mandatory, if " + "is_taxable is false.", + "type": "string", + "x-node_available_in": ["in", "us", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax to be associated to the item.", + "example": 982000000037049, + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "in"], + }, + "tax_percentage": { + "description": "Percent of the tax.", + "example": "70%", + "type": "string", + }, + "unitkey_code": { + "description": "Add Unit Key Code for your " + "goods/services. Download the CFDI Catalogs.", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "vendor_id": {"description": "Preferred vendor ID.", "example": " ", "type": "string"}, + }, + "required": ["name", "rate"], + "type": "object", + }, + "UPDATEITEMCUSTOMFIELDS_REQUEST_BODY_SCHEMA": { + "description": "Custom fields for an item.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "CREATEJOURNALENTRY_REQUEST_BODY_SCHEMA": { + "properties": { + "currency_id": { + "description": "ID of the Currency Associated with the Journal", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000098001", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "exchange_rate": { + "description": "Exchange Rate between the Currencies", + "example": 1, + "format": "double", + "type": "number", + }, + "include_in_vat_return": { + "description": "Check if Journal should be included in VAT Return", + "type": "boolean", + "x-node_available_in": ["eu", "uk"], + "x-node_unavailable_in": [], + }, + "is_bas_adjustment": { + "description": "Check if Journal is created for BAS Adjustment", + "type": "boolean", + "x-node_available_in": ["au"], + "x-node_unavailable_in": [], + }, + "journal_date": { + "description": "Date on which the journal to be recorded.", + "example": "2013-09-04", + "type": "string", + }, + "journal_type": { + "description": "Type of the Journal. Allowed values: " + " Cash and Both " + ".", + "example": "both", + "type": "string", + }, + "line_items": { + "items": { + "properties": { + "account_id": { + "description": "ID of account for which journals to be recorded.", + "example": "460000000000361", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "journal " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount to be recorded for the journal.", + "example": 5000, + "format": "double", + "type": "number", + }, + "customer_id": { + "description": "ID of the Customer/Vendor", + "type": "string", + }, + "debit_or_credit": { + "description": "Whether " + "the " + "accounts " + "needs " + "to " + "be " + "debited " + "or " + "credited. " + "Allowed " + "Values: " + "debit " + "and " + "credit.", + "example": "credit", + "type": "string", + }, + "description": { + "description": "Description that can be given at the line item level.", + "type": "string", + }, + "line_id": { + "description": "ID of the Line", + "example": "460000000038005", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "project_id": { + "description": "ID of the Project", + "example": "460000000898001", + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "journal " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "example": "460000000094001", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "ID of the Tag Option", + "example": "460000000048001", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_authority_id": { + "description": "ID of the Tax Authority", + "type": "string", + "x-node_available_in": ["us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Name of the Tax Authority", + "type": "string", + "x-node_available_in": ["us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_type": { + "description": "Type " + "of " + "the " + "Tax " + "Exemption. " + "Allowed " + "Values " + ": " + "customer " + "and " + "item", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_id": {"description": "ID of the tax.", "type": "string"}, + }, + "required": ["amount", "debit_or_credit"], + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Notes for the journal.", + "example": "Loan repayment", + "type": "string", + }, + "product_type": { + "description": "Type of the journal. This denotes " + "whether the journal is to be treated " + "as goods or service. Allowed Values: " + " digital_service, " + "goods and " + "service.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "Reference number for the journal.", + "example": "7355", + "type": "string", + }, + "status": { + "description": "Search Journal by journal status. Allowed " + "Values: draft and " + "published.", + "example": "draft", + "type": "string", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_type": { + "description": "Type of the Tax Exemption. " + "Allowed Values : " + "customer and " + "item", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "journals. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + }, + "required": ["journal_date"], + "type": "object", + }, + "UPDATEJOURNALINZOHOBOOKS_REQUEST_BODY_SCHEMA": { + "properties": { + "currency_id": { + "description": "ID of the Currency Associated with the Journal", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000098001", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "exchange_rate": { + "description": "Exchange Rate between the Currencies", + "example": 1, + "format": "double", + "type": "number", + }, + "include_in_vat_return": { + "description": "Check if Journal should be included in VAT Return", + "type": "boolean", + "x-node_available_in": ["eu", "uk"], + "x-node_unavailable_in": [], + }, + "is_bas_adjustment": { + "description": "Check if Journal is created for BAS Adjustment", + "type": "boolean", + "x-node_available_in": ["au"], + "x-node_unavailable_in": [], + }, + "journal_date": { + "description": "Date on which the journal to be recorded.", + "example": "2013-09-04", + "type": "string", + }, + "journal_type": { + "description": "Type of the Journal. Allowed values: " + " Cash and Both " + ".", + "example": "both", + "type": "string", + }, + "line_items": { + "items": { + "properties": { + "account_id": { + "description": "ID of account for which journals to be recorded.", + "example": "460000000000361", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "journal " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Amount to be recorded for the journal.", + "example": 5000, + "format": "double", + "type": "number", + }, + "customer_id": { + "description": "ID of the Customer/Vendor", + "type": "string", + }, + "debit_or_credit": { + "description": "Whether " + "the " + "accounts " + "needs " + "to " + "be " + "debited " + "or " + "credited. " + "Allowed " + "Values: " + "debit " + "and " + "credit.", + "example": "credit", + "type": "string", + }, + "description": { + "description": "Description that can be given at the line item level.", + "type": "string", + }, + "line_id": { + "description": "ID of the Line", + "example": "460000000038005", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "project_id": { + "description": "ID of the Project", + "example": "460000000898001", + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "journal " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "example": "460000000094001", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "ID of the Tag Option", + "example": "460000000048001", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_authority_id": { + "description": "ID of the Tax Authority", + "type": "string", + "x-node_available_in": ["us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Name of the Tax Authority", + "type": "string", + "x-node_available_in": ["us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_type": { + "description": "Type " + "of " + "the " + "Tax " + "Exemption. " + "Allowed " + "Values " + ": " + "customer " + "and " + "item", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_id": {"description": "ID of the tax.", "type": "string"}, + }, + "required": ["amount", "debit_or_credit"], + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Notes for the journal.", + "example": "Loan repayment", + "type": "string", + }, + "product_type": { + "description": "Type of the journal. This denotes " + "whether the journal is to be treated " + "as goods or service. Allowed Values: " + " digital_service, " + "goods and " + "service.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "Reference number for the journal.", + "example": "7355", + "type": "string", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_type": { + "description": "Type of the Tax Exemption. " + "Allowed Values : " + "customer and " + "item", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "journals. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + }, + "required": ["journal_date"], + "type": "object", + }, + "ADDJOURNALCOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "Description of a comment", + "example": "Journal Created", + "type": "string", + } + }, + "type": "object", + }, + "CREATEZOHOBOOKLOCATION_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "properties": { + "attention": {"description": "Attention of the location.", "type": "string"}, + "city": { + "description": "City Name of the location.", + "example": "New York City", + "type": "string", + }, + "country": { + "description": "Country Name of the location.", + "example": "U.S.A", + "type": "string", + }, + "state": { + "description": "State Name of the location.", + "example": "New York", + "type": "string", + }, + "state_code": { + "description": "State code of the location.", + "example": "NY", + "type": "string", + }, + "street_address1": { + "description": "Street Name of the location.", + "example": "No:234,90 Church Street", + "type": "string", + }, + "street_address2": { + "description": "Street Name of the location.", + "example": "McMillan Avenue", + "type": "string", + }, + }, + "type": "object", + }, + "associated_series_ids": { + "example": ["982000000870911", "982000000870915"], + "items": {"type": "string"}, + "type": "array", + }, + "auto_number_generation_id": { + "description": "Autonumber generation group ID", + "example": "982000000870911", + "type": "string", + }, + "email": { + "description": "Email id for the location", + "example": "willsmith@bowmanfurniture.com", + "type": "string", + }, + "is_all_users_selected": { + "description": "Whether all users are selected or not", + "example": False, + "type": "boolean", + }, + "location_name": { + "description": "Name of the location", + "example": "Head Office", + "type": "string", + }, + "parent_location_id": { + "description": "Parent Location ID", + "example": "460000000041010", + "type": "string", + }, + "phone": { + "description": "Mobile number for location", + "example": "+1-925-921-9201", + "type": "string", + }, + "tax_settings_id": { + "description": "Tax Settings ID", + "example": "460000000038080", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "type": { + "description": "Type of the location", + "example": "general / line_item_only", + "type": "string", + }, + "user_ids": { + "description": "Comma separated user ids.", + "example": "460000000036868,460000000036869", + "type": "string", + }, + }, + "required": ["location_name", "country", "tax_settings_id"], + "type": "object", + }, + "UPDATELOCATIONINZOHOBOOKS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "properties": { + "attention": {"description": "Attention of the location.", "type": "string"}, + "city": { + "description": "City Name of the location.", + "example": "New York City", + "type": "string", + }, + "country": { + "description": "Country Name of the location.", + "example": "U.S.A", + "type": "string", + }, + "state": { + "description": "State Name of the location.", + "example": "New York", + "type": "string", + }, + "state_code": { + "description": "State code of the location.", + "example": "NY", + "type": "string", + }, + "street_address1": { + "description": "Street Name of the location.", + "example": "No:234,90 Church Street", + "type": "string", + }, + "street_address2": { + "description": "Street Name of the location.", + "example": "McMillan Avenue", + "type": "string", + }, + }, + "type": "object", + }, + "associated_series_ids": { + "example": ["982000000870911", "982000000870915"], + "items": {"type": "string"}, + "type": "array", + }, + "auto_number_generation_id": { + "description": "Autonumber generation group ID", + "example": "982000000870911", + "type": "string", + }, + "email": { + "description": "Email id for the location", + "example": "willsmith@bowmanfurniture.com", + "type": "string", + }, + "is_all_users_selected": { + "description": "Whether all users are selected or not", + "example": False, + "type": "boolean", + }, + "location_name": { + "description": "Name of the location", + "example": "Head Office", + "type": "string", + }, + "parent_location_id": { + "description": "Parent Location ID", + "example": "460000000041010", + "type": "string", + }, + "phone": { + "description": "Mobile number for location", + "example": "+1-925-921-9201", + "type": "string", + }, + "tax_settings_id": { + "description": "Tax Settings ID", + "example": "460000000038080", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "type": { + "description": "Type of the location", + "example": "general / line_item_only", + "type": "string", + }, + "user_ids": { + "description": "Comma separated user ids.", + "example": "460000000036868,460000000036869", + "type": "string", + }, + }, + "required": ["location_name", "country", "tax_settings_id"], + "type": "object", + }, + "CREATEOPENINGBALANCE_REQUEST_BODY_SCHEMA": { + "properties": { + "accounts": { + "items": { + "properties": { + "account_id": { + "description": "ID " + "of " + "account " + "for " + "which " + "you " + "need " + "to " + "record " + "opening " + "balance.", + "example": "460000000000358", + "type": "string", + }, + "amount": {"example": 2000, "format": "double", "type": "number"}, + "currency_id": { + "description": "ID of account currency.", + "example": "460000000000097", + "type": "string", + }, + "debit_or_credit": { + "description": "Debit " + "or " + "Credit " + "for " + "which " + "the " + "amount " + "needs " + "to " + "be " + "recorded. " + "Allowed " + "Values: " + "debit " + "and " + "credit.", + "example": "debit", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for the foreign currencies if involved.", + "example": 1, + "format": "double", + "type": "number", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + }, + "required": ["debit_or_credit"], + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "Date on which the opening balance needs to be " + "recorded. [yyyy-MM-dd]", + "example": "2013-10-01", + "type": "string", + }, + }, + "required": ["date"], + "type": "object", + }, + "UPDATEOPENINGBALANCE_REQUEST_BODY_SCHEMA": { + "properties": { + "accounts": { + "items": { + "properties": { + "account_id": { + "description": "ID " + "of " + "account " + "for " + "which " + "you " + "need " + "to " + "record " + "opening " + "balance.", + "example": "460000000000358", + "type": "string", + }, + "account_name": {"example": "Undeposited Funds", "type": "string"}, + "acount_split_id": { + "description": "ID of split account that you want to update.", + "example": "460000000050045", + "type": "string", + }, + "amount": {"example": 2000, "format": "double", "type": "number"}, + "bcy_amount": { + "description": "Amount in Base Currency of the Organisation", + "example": 2000, + "format": "double", + "type": "number", + }, + "currency_code": {"example": "USD", "type": "string"}, + "currency_id": { + "description": "ID of account currency.", + "example": "460000000000097", + "type": "string", + }, + "debit_or_credit": { + "description": "Debit " + "or " + "Credit " + "for " + "which " + "the " + "amount " + "needs " + "to " + "be " + "recorded. " + "Allowed " + "Values: " + "debit " + "and " + "credit.", + "example": "debit", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for the foreign currencies if involved.", + "example": 1, + "format": "double", + "type": "number", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "location_name": {"description": "Name of the location.", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "Date on which the opening balance needs to be " + "recorded. [yyyy-MM-dd]", + "example": "2013-10-01", + "type": "string", + }, + "opening_balance_id": { + "description": "ID of opening balance.", + "example": "460000000050041", + "type": "string", + }, + }, + "required": ["opening_balance_id"], + "type": "object", + }, + "CREATEORGANIZATIONINZOHOBOOKS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Billing address of the organisation", + "properties": { + "city": { + "description": "City of the organisation", + "example": " ", + "type": "string", + }, + "country": { + "description": "Country of the Organisation", + "example": "U.S.A", + "type": "string", + }, + "state": { + "description": "State where the organisation is located", + "example": " ", + "type": "string", + }, + "street_address1": { + "description": "Street name of the Billing address of the Organisation", + "example": " ", + "type": "string", + }, + "street_address2": { + "description": "Continyed billing address of the organisation", + "example": " ", + "type": "string", + }, + "zip": { + "description": "ZIP/Postal code of the organisation's location", + "example": "U.S.A", + "type": "string", + }, + }, + "type": "object", + }, + "currency_code": { + "description": "Standard code for currency.", + "example": "USD", + "type": "string", + }, + "date_format": { + "description": "Format for representing the date.", + "example": "dd MMM yyyy", + "type": "string", + }, + "field_separator": { + "description": "Field separator for components in date.", + "example": " ", + "type": "string", + }, + "fiscal_year_start_month": { + "description": "Fiscal or financial " + "starting year of your " + "business. Allowed Values: " + "january, " + "february, " + "march, " + "april, " + "may, " + "june, " + "july, " + "august, " + "september, " + "october, " + "november and " + "december", + "example": "january", + "type": "string", + }, + "industry_size": { + "description": "The size of the industry. The " + 'possibe values could be "small ' + 'scale", "medium scale", "large ' + 'scale"', + "example": " ", + "type": "string", + }, + "industry_type": { + "description": "Business type", + "example": "Services", + "type": "string", + }, + "language_code": { + "description": "language code for organization.For " + "instance en represents " + "english.", + "example": "en", + "type": "string", + }, + "name": { + "description": "Name of the project.", + "example": "Zillium Inc", + "type": "string", + }, + "org_address": { + "description": "Billing address of the organisation", + "example": " ", + "type": "string", + }, + "portal_name": { + "description": "Poratal name for the organisation. " + "Length of the portal name should be " + "greater than 4 and less than 31. " + "Allowed chars [a-z][A-Z][0-9]", + "example": "zilluminc", + "type": "string", + }, + "remit_to_address": { + "description": "Shipping address of the organisation", + "example": " ", + "type": "string", + }, + "time_zone": { + "description": "Time zone in with the organization is located geographically.", + "example": "PST", + "type": "string", + }, + }, + "required": ["name", "currency_code", "time_zone", "portal_name"], + "type": "object", + }, + "UPDATEORGANIZATIONDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Billing address of the organisation", + "properties": { + "city": { + "description": "City of the organisation", + "example": " ", + "type": "string", + }, + "country": { + "description": "Country of the Organisation", + "example": "U.S.A", + "type": "string", + }, + "state": { + "description": "State where the organisation is located", + "example": " ", + "type": "string", + }, + "street_address1": { + "description": "Street name of the Billing address of the Organisation", + "example": " ", + "type": "string", + }, + "street_address2": { + "description": "Continyed billing address of the organisation", + "example": " ", + "type": "string", + }, + "zip": { + "description": "ZIP/Postal code of the organisation's location", + "example": "U.S.A", + "type": "string", + }, + }, + "type": "object", + }, + "companyid_label": { + "description": 'Label " Company ID "', + "example": " ", + "type": "string", + }, + "companyid_value": { + "description": 'value in field "company ID"', + "example": " ", + "type": "string", + }, + "contact_name": { + "description": "Name of the contact person of the organisation", + "example": "John Smith", + "type": "string", + }, + "currency_id": { + "description": "ID of the organisation curreency", + "example": "982000000000190", + "type": "string", + }, + "custom_fields": { + "description": "Additional fields to describe an organisation", + "items": { + "properties": { + "index": { + "description": "Index used to list", + "example": 1, + "format": "double", + "type": "number", + }, + "label": { + "description": "Label of each column", + "example": " ", + "type": "string", + }, + "value": { + "description": "Value of the list", + "example": " ", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "date_format": { + "description": "Format for representing the date.", + "example": "dd MMM yyyy", + "type": "string", + }, + "email": { + "description": "email ID of the contact person of the organisation", + "example": "johndavid@zilliuminc.com", + "type": "string", + }, + "fax": { + "description": "FAX number of the organisation", + "example": " ", + "type": "string", + }, + "field_separator": { + "description": "Field separator for components in date.", + "example": " ", + "type": "string", + }, + "fiscal_year_start_month": { + "description": "Fiscal or financial " + "starting year of your " + "business. Allowed Values: " + "january, " + "february, " + "march, " + "april, " + "may, " + "june, " + "july, " + "august, " + "september, " + "october, " + "november and " + "december", + "example": "january", + "type": "string", + }, + "is_logo_uploaded": { + "description": "To determine whether logo is uploaded.", + "example": True, + "type": "boolean", + }, + "language_code": { + "description": "language code for organization.For " + "instance en represents " + "english.", + "example": "en", + "type": "string", + }, + "name": { + "description": "Name of the project.", + "example": "Zillium Inc", + "type": "string", + }, + "org_address": { + "description": "Billing address of the organisation", + "example": " ", + "type": "string", + }, + "phone": { + "description": "Contact number of the organisation", + "example": " ", + "type": "string", + }, + "remit_to_address": { + "description": "Shipping address of the organisation", + "example": " ", + "type": "string", + }, + "taxid_label": {"description": 'Label "tax ID"', "example": " ", "type": "string"}, + "taxid_value": {"description": 'Value in "tax ID"', "example": " ", "type": "string"}, + "time_zone": { + "description": "Time zone in with the organization is located geographically.", + "example": "PST", + "type": "string", + }, + "website": {"description": "Organisation's website", "example": " ", "type": "string"}, + }, + "type": "object", + }, + "CREATEPROJECT_REQUEST_BODY_SCHEMA": { + "properties": { + "billing_type": { + "description": "The way you bill your customer. " + "Allowed Values: " + "fixed_cost_for_project, " + "based_on_project_hours, " + "based_on_staff_hours and " + "based_on_task_hours", + "example": "based_on_task_hours", + "type": "string", + }, + "budget_amount": { + "description": "Give value, if you are estimating total project revenue budget.", + "example": " ", + "type": "string", + }, + "budget_hours": {"description": "Task budget hours", "example": " ", "type": "string"}, + "budget_type": { + "description": "The way you budget. Allowed Values: " + "total_project_cost, " + "total_project_hours, " + "hours_per_task and " + "hours_per_staff", + "example": " ", + "type": "string", + }, + "cost_budget_amount": { + "description": "Budgeted Cost to complete this project", + "example": "1000.00", + "format": "double", + "type": "number", + }, + "currency_id": {"example": "460000000098001", "type": "string"}, + "customer_id": { + "description": "ID of the customer.", + "example": "460000000044001", + "type": "string", + }, + "description": { + "description": "Project description. Max-length [500]", + "example": "Distribution for the system of " + "intermediaries between the producer of " + "goods and/or services and the final user", + "type": "string", + }, + "project_name": { + "description": "Name of the project. Max-length [100]", + "example": "Network Distribution", + "type": "string", + }, + "rate": {"description": "Hourly rate for a task.", "example": " ", "type": "string"}, + "tasks": { + "items": { + "properties": { + "budget_hours": { + "description": "Task budgeting.", + "example": "INV-00003", + "type": "string", + }, + "description": { + "description": "Task description. Max-length [500]", + "example": "INV-00003", + "type": "string", + }, + "rate": { + "description": "Hourly rate of a task.", + "example": "INV-00003", + "type": "string", + }, + "task_name": { + "description": "Name of the task. Max-length [100]", + "example": "INV-00003", + "type": "string", + }, + }, + "required": ["task_name"], + "type": "object", + }, + "type": "array", + }, + "user_id": { + "description": "ID of the user to be added to the project.", + "example": "INV-00003", + "type": "string", + }, + "users": { + "items": { + "properties": { + "billed_hours": {"example": "12:27", "type": "string"}, + "budget_hours": { + "description": "Task budget hours", + "example": " ", + "type": "string", + }, + "cost_rate": {"example": "10.00", "format": "double", "type": "number"}, + "email": { + "description": "Email of the user. Max-length [100]", + "example": "johndavid@zilliuminc.com", + "type": "string", + }, + "is_current_user": {"example": True, "type": "boolean"}, + "rate": { + "description": "Hourly rate for a task.", + "example": " ", + "type": "string", + }, + "status": {"example": "active", "type": "string"}, + "total_hours": {"example": "12:26", "type": "string"}, + "un_billed_hours": {"example": "00:00", "type": "string"}, + "user_id": { + "description": "ID of the user to be added to the project.", + "example": "INV-00003", + "type": "string", + }, + "user_name": { + "description": "Name of the user. Max-length [200]", + "example": "John David", + "type": "string", + }, + "user_role": { + "description": "Role " + "to be " + "assigned. " + "Allowed " + "Values: " + "staff, " + "admin " + "and " + "timesheetstaff", + "example": "admin", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "required": ["project_name", "customer_id", "billing_type", "user_id"], + "type": "object", + }, + "UPDATEPROJECTWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "billing_type": { + "description": "The way you bill your customer. " + "Allowed Values: " + "fixed_cost_for_project, " + "based_on_project_hours, " + "based_on_staff_hours and " + "based_on_task_hours", + "example": "based_on_task_hours", + "type": "string", + }, + "budget_amount": { + "description": "Give value, if you are estimating total project revenue.", + "example": " ", + "type": "string", + }, + "budget_hours": {"description": "Task budget hours", "example": " ", "type": "string"}, + "budget_type": { + "description": "The way you budget. Allowed Values: " + "total_project_cost, " + "total_project_hours, " + "hours_per_task and " + "hours_per_staff", + "example": " ", + "type": "string", + }, + "cost_budget_amount": { + "description": "Budgeted Cost to complete this project", + "example": "1000.00", + "format": "double", + "type": "number", + }, + "currency_id": {"example": "460000000098001", "type": "string"}, + "customer_id": { + "description": "ID of the customer.", + "example": "460000000044001", + "type": "string", + }, + "description": { + "description": "Project description. Max-length [500]", + "example": "Distribution for the system of " + "intermediaries between the producer of " + "goods and/or services and the final user", + "type": "string", + }, + "project_name": { + "description": "Name of the project. Max-length [100]", + "example": "Network Distribution", + "type": "string", + }, + "rate": {"description": "Hourly rate for a task.", "example": " ", "type": "string"}, + "tasks": { + "items": { + "properties": { + "budget_hours": { + "description": "Task budgeting.", + "example": "INV-00003", + "type": "string", + }, + "description": { + "description": "Task description. Max-length [500]", + "example": "INV-00003", + "type": "string", + }, + "rate": { + "description": "Hourly rate of a task.", + "example": "INV-00003", + "type": "string", + }, + "task_name": { + "description": "Name of the task. Max-length [100]", + "example": "INV-00003", + "type": "string", + }, + }, + "required": ["task_name"], + "type": "object", + }, + "type": "array", + }, + "user_id": { + "description": "ID of the user to be added to the project.", + "example": "INV-00003", + "type": "string", + }, + "users": { + "items": { + "properties": { + "billed_hours": {"example": "12:27", "type": "string"}, + "budget_hours": { + "description": "Task budget hours", + "example": " ", + "type": "string", + }, + "cost_rate": {"example": "10.00", "format": "double", "type": "number"}, + "email": { + "description": "Email of the user. Max-length [100]", + "example": "johndavid@zilliuminc.com", + "type": "string", + }, + "is_current_user": {"example": True, "type": "boolean"}, + "rate": { + "description": "Hourly rate for a task.", + "example": " ", + "type": "string", + }, + "status": {"example": "active", "type": "string"}, + "total_hours": {"example": "12:26", "type": "string"}, + "un_billed_hours": {"example": "00:00", "type": "string"}, + "user_id": { + "description": "ID of the user to be added to the project.", + "example": "INV-00003", + "type": "string", + }, + "user_name": { + "description": "Name of the user. Max-length [200]", + "example": "John David", + "type": "string", + }, + "user_role": { + "description": "Role " + "to be " + "assigned. " + "Allowed " + "Values: " + "staff, " + "admin " + "and " + "timesheetstaff", + "example": "admin", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "required": ["project_name", "customer_id", "billing_type", "user_id"], + "type": "object", + }, + "UPDATEPROJECTDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "billing_type": { + "description": "The way you bill your customer. " + "Allowed Values: " + "fixed_cost_for_project, " + "based_on_project_hours, " + "based_on_staff_hours and " + "based_on_task_hours", + "example": "based_on_task_hours", + "type": "string", + }, + "budget_amount": { + "description": "Give value, if you are estimating total project revenue.", + "example": " ", + "type": "string", + }, + "budget_hours": {"description": "Task budget hours", "example": " ", "type": "string"}, + "budget_type": { + "description": "The way you budget. Allowed Values: " + "total_project_cost, " + "total_project_hours, " + "hours_per_task and " + "hours_per_staff", + "example": " ", + "type": "string", + }, + "cost_budget_amount": { + "description": "Budgeted Cost to complete this project", + "example": "1000.00", + "format": "double", + "type": "number", + }, + "currency_id": {"example": "460000000098001", "type": "string"}, + "customer_id": { + "description": "ID of the customer.", + "example": "460000000044001", + "type": "string", + }, + "description": { + "description": "Project description. Max-length [500]", + "example": "Distribution for the system of " + "intermediaries between the producer of " + "goods and/or services and the final user", + "type": "string", + }, + "project_name": { + "description": "Name of the project. Max-length [100]", + "example": "Network Distribution", + "type": "string", + }, + "rate": {"description": "Hourly rate for a task.", "example": " ", "type": "string"}, + "tasks": { + "items": { + "properties": { + "budget_hours": { + "description": "Task budgeting.", + "example": "INV-00003", + "type": "string", + }, + "description": { + "description": "Task description. Max-length [500]", + "example": "INV-00003", + "type": "string", + }, + "rate": { + "description": "Hourly rate of a task.", + "example": "INV-00003", + "type": "string", + }, + "task_name": { + "description": "Name of the task. Max-length [100]", + "example": "INV-00003", + "type": "string", + }, + }, + "required": ["task_name"], + "type": "object", + }, + "type": "array", + }, + "user_id": { + "description": "ID of the user to be added to the project.", + "example": "INV-00003", + "type": "string", + }, + "users": { + "items": { + "properties": { + "billed_hours": {"example": "12:27", "type": "string"}, + "budget_hours": { + "description": "Task budget hours", + "example": " ", + "type": "string", + }, + "cost_rate": {"example": "10.00", "format": "double", "type": "number"}, + "email": { + "description": "Email of the user. Max-length [100]", + "example": "johndavid@zilliuminc.com", + "type": "string", + }, + "is_current_user": {"example": True, "type": "boolean"}, + "rate": { + "description": "Hourly rate for a task.", + "example": " ", + "type": "string", + }, + "status": {"example": "active", "type": "string"}, + "total_hours": {"example": "12:26", "type": "string"}, + "un_billed_hours": {"example": "00:00", "type": "string"}, + "user_id": { + "description": "ID of the user to be added to the project.", + "example": "INV-00003", + "type": "string", + }, + "user_name": { + "description": "Name of the user. Max-length [200]", + "example": "John David", + "type": "string", + }, + "user_role": { + "description": "Role " + "to be " + "assigned. " + "Allowed " + "Values: " + "staff, " + "admin " + "and " + "timesheetstaff", + "example": "admin", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "required": ["project_name", "customer_id", "billing_type", "user_id"], + "type": "object", + }, + "CLONEPROJECT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "Project description. Max-length [500]", + "example": "Distribution for the system of " + "intermediaries between the producer of " + "goods and/or services and the final user", + "type": "string", + }, + "project_name": { + "description": "Name of the project. Max-length [100]", + "example": "Network Distribution", + "type": "string", + }, + }, + "required": ["project_name"], + "type": "object", + }, + "ASSIGNUSERSTOPROJECT_REQUEST_BODY_SCHEMA": { + "properties": { + "cost_rate": {"example": "10.00", "format": "double", "type": "number"}, + "users": { + "items": { + "properties": { + "user_id": { + "description": "ID of the user to be added to the project.", + "example": "460000000024003", + "type": "string", + } + }, + "required": ["user_id"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["cost_rate"], + "type": "object", + }, + "INVITEUSERTOPROJECT_REQUEST_BODY_SCHEMA": { + "properties": { + "budget_hours": {"description": "Task budget hours.", "example": "0", "type": "string"}, + "cost_rate": {"example": "10.00", "format": "double", "type": "number"}, + "email": { + "description": "Email of the user. Max-length [100]", + "example": "johndavid@zilliuminc.com", + "type": "string", + }, + "rate": {"description": "Hourly rate for a task.", "example": " ", "type": "string"}, + "user_name": { + "description": "Name of the user. Max-length [200]", + "example": "John David", + "type": "string", + }, + "user_role": { + "description": "Role to be assigned. Allowed Values: " + "staff, admin " + "and timesheetstaff", + "example": "admin", + "type": "string", + }, + }, + "required": ["user_name", "email"], + "type": "object", + }, + "UPDATEPROJECTUSERDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "budget_hours": {"description": "Task budget hours.", "example": "0", "type": "string"}, + "cost_rate": {"example": "10.00", "format": "double", "type": "number"}, + "rate": {"example": 5000, "format": "float", "type": "number"}, + "user_name": { + "description": "Name of the user. Max-length [200]", + "example": "John David", + "type": "string", + }, + "user_role": { + "description": "Role to be assigned. Allowed Values: " + "staff, admin " + "and timesheetstaff", + "example": "admin", + "type": "string", + }, + }, + "type": "object", + }, + "POSTPROJECTCOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "Project description. Max-length [500]", + "example": "Billing based on task hours", + "type": "string", + } + }, + "required": ["description"], + "type": "object", + }, + "CREATEVENDORPURCHASEORDER_REQUEST_BODY_SCHEMA": { + "properties": { + "attention": { + "description": "The name or designation of the specific " + "person who should be contacted or " + "notified regarding the delivery of goods " + "or services from this purchase order. " + "This field is typically used to specify " + "the primary contact person at the " + "delivery location, such as a warehouse " + "manager, office administrator, or " + "project coordinator who will receive and " + "process the delivered items.", + "type": "string", + }, + "billing_address_id": { + "description": "Unique identifier of the " + "billing address to be used for " + "this purchase order. The " + "billing address determines " + "where invoices and related " + "documents will be sent. This " + "field is optional and if not " + "specified, the default billing " + "address from your organization " + "settings will be used. You can " + "obtain the billing address ID " + "by listing all available " + "addresses in your organization. " + "Ensure the address exists and " + "contains the correct billing " + "information before referencing " + "its ID here.", + "example": "460000000017491", + "format": "int64", + "type": "integer", + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person", + "example": 460000000031001, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "crm_custom_reference_id": { + "description": "ID of CRM Custom Reference", + "format": "int64", + "type": "integer", + }, + "crm_owner_id": { + "description": "Unique identifier of the CRM owner " + "assigned to this purchase order. This " + "field links the purchase order to a " + "specific CRM user who is responsible " + "for managing the vendor relationship " + "and overseeing the procurement " + "process. The CRM owner can track, " + "follow up, and manage all aspects of " + "this purchase order within the CRM " + "system.", + "type": "string", + }, + "currency_id": { + "description": "Unique identifier of the currency for " + "the purchase order. This value is " + "mandatory to specify the currency in " + "which the purchase order amounts will " + "be displayed and processed. You can " + "obtain the currency ID by listing all " + "available currencies using the GET " + "/settings/currencies API. Ensure the " + "currency exists and is properly " + "configured in your organization before " + "referencing its ID here.", + "example": "460000000000099", + "type": "string", + }, + "custom_fields": { + "description": "Custom fields for purchase order.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "The date when the purchase order was created " + "or issued. This is the official date that " + "appears on the purchase order document and is " + "used for record-keeping, reporting, and " + "tracking purposes. The date should be in " + "YYYY-MM-DD format and typically represents " + "when the purchase order was authorized and " + "sent to the vendor.", + "example": "2014-02-10", + "type": "string", + }, + "delivery_customer_id": { + "description": "Unique identifier of the " + "customer for whom the goods " + "or services in this purchase " + "order are being procured. " + "This field is used when the " + "purchase order is created on " + "behalf of a customer, such as " + "in drop-shipping scenarios or " + "when procuring items for " + "specific customer projects. " + "The customer information may " + "be displayed on the purchase " + "order for vendor reference.", + "type": "string", + }, + "delivery_date": { + "description": "The expected delivery date when the " + "goods or services ordered in this " + "purchase order should be received. " + "This date is used for planning, " + "scheduling, and tracking deliveries. " + "It helps in managing inventory, " + "coordinating with vendors, and " + "ensuring timely receipt of ordered " + "items. The date should be in " + "YYYY-MM-DD format and is typically " + "communicated to the vendor as part " + "of the purchase order terms.", + "example": "2014-02-10", + "type": "string", + }, + "delivery_org_address_id": { + "description": "Unique identifier of the " + "organization address where " + "the goods or services from " + "this purchase order should " + "be delivered. This field " + "specifies the delivery " + "location within your " + "organization, such as a " + "warehouse, office, or " + "branch location. The " + "address details are " + "retrieved from your " + "organization's address " + "book and displayed on the " + "purchase order for vendor " + "reference.", + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "discount": { + "description": "The discount amount or percentage to be " + "applied to the purchase order total. This " + "can be specified as a fixed amount or " + "percentage value. Discounts are typically " + "offered by vendors for bulk purchases, " + "early payments, or promotional purposes. " + "The discount reduces the total amount " + "payable and affects the final purchase " + "order total.", + "example": "10", + "type": "string", + }, + "discount_account_id": { + "description": "Unique identifier of the " + "accounting account where the " + "discount amount will be " + "recorded. This account is used " + "to track and categorize " + "discount expenses in your " + "general ledger. The discount " + "account should be configured " + "as an expense or " + "contra-revenue account to " + "properly reflect the impact of " + "discounts on your financial " + "statements.", + "example": "460000000011105", + "type": "string", + }, + "documents": { + "description": "Array of documents attached to the purchase order.", + "items": { + "properties": { + "document_id": { + "description": "ID of the Document", + "format": "int64", + "type": "integer", + }, + "file_name": { + "description": "Name " + "of " + "the " + "attached " + "document " + "file. " + "Includes " + "file " + "extension " + "and " + "represents " + "the " + "original " + "filename " + "as " + "uploaded. " + "Used " + "for " + "display " + "purposes " + "and " + "file " + "identification " + "in " + "the " + "system.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "due_date": { + "description": "The expected delivery date when the goods " + "or services ordered in this purchase " + "order should be received. This date is " + "used for planning, scheduling, and " + "tracking deliveries. It helps in managing " + "inventory, coordinating with vendors, and " + "ensuring timely receipt of ordered items. " + "The date should be in YYYY-MM-DD format.", + "type": "string", + }, + "exchange_rate": { + "description": "The currency exchange rate used to " + "convert the purchase order amounts " + "from the vendor's currency to your " + "organization's base currency. This " + "rate is applied when the purchase " + "order is created in a foreign " + "currency. A value of 1 indicates the " + "same currency as your base currency. " + "This rate affects all monetary " + "calculations and reporting for this " + "purchase order.", + "example": 1, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Boolean flag that " + "determines whether the " + "discount is applied before " + "or after tax calculations. " + "When set to true, the " + "discount is applied to the " + "subtotal before tax is " + "calculated, resulting in " + "tax being calculated on the " + "discounted amount. When set " + "to false, the discount is " + "applied after tax " + "calculations, which may " + "affect the final total " + "differently depending on " + "your tax configuration.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Boolean flag that specifies " + "whether the line item rates " + "include or exclude tax amounts. " + "When set to true, the specified " + "rates are inclusive of tax, " + "meaning the tax amount is already " + "included in the rate. When set to " + "false, the rates are exclusive of " + "tax, and tax will be calculated " + "and added separately. This " + "setting affects how tax " + "calculations are performed and " + "displayed on the purchase order.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "is_update_customer": { + "description": "Check if customer should be updated", + "type": "string", + }, + "line_items": { + "description": "Line items of purchase order.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "of " + "the " + "accounting " + "account " + "for " + "the " + "line " + "item. " + "Mandatory " + "for " + "non-inventory " + "items/services. " + "Determines " + "expense " + "categorization " + "in " + "general " + "ledger.", + "example": "460000000074003", + "type": "string", + }, + "acquisition_vat_id": { + "description": "ID of the VAT Acquistion", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "Additional " + "details, " + "specifications, " + "or " + "notes " + "about " + "the " + "line " + "item. " + "Can " + "include " + "technical " + "specs, " + "requirements, " + "delivery " + "instructions. " + "Appears " + "on " + "purchase " + "order " + "document " + "for " + "vendor " + "reference.", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN or SAC Code for the Item", + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_custom_fields": { + "items": { + "properties": { + "index": { + "description": "Index of the Custom Field", + "example": 1, + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "item " + "or " + "service " + "in " + "the " + "line " + "item. " + "Mandatory " + "field " + "that " + "links " + "to " + "the " + "item " + "catalog. " + "Determines " + "item " + "details, " + "pricing, " + "and " + "inventory " + "tracking. " + "Obtain " + "from " + "GET " + "/items " + "API.", + "example": "460000000027009", + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "of " + "line " + "item " + "within " + "purchase " + "order. " + "Determines " + "display " + "order " + "on " + "documents " + "and " + "reports. " + "Typically " + "numbered " + "sequentially " + "from " + "0 " + "or " + "1. " + "Maintains " + "consistency " + "across " + "related " + "documents.", + "example": 0, + "type": "integer", + }, + "location_id": { + "description": "Unique " + "identifier " + "of " + "the " + "business " + "location " + "or " + "branch " + "where " + "this " + "purchase " + "order " + "is " + "being " + "created " + "and " + "managed. " + "This " + "field " + "is " + "used " + "to " + "associate " + "the " + "purchase " + "order " + "with " + "a " + "specific " + "location " + "within " + "your " + "organization, " + "enabling " + "location-based " + "reporting, " + "inventory " + "tracking, " + "and " + "multi-location " + "business " + "operations. " + "The " + "location " + "information " + "affects " + "how " + "the " + "purchase " + "order " + "is " + "processed " + "and " + "where " + "inventory " + "is " + "received.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Display " + "name " + "of " + "the " + "line " + "item " + "on " + "the " + "purchase " + "order. " + "Auto-populated " + "from " + "item " + "catalog " + "when " + "item_id " + "is " + "specified. " + "Can " + "be " + "customized. " + "Used " + "for " + "vendor " + "reference " + "and " + "documentation.", + "example": "Hard Drive", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "being " + "ordered. " + "Used " + "with " + "rate " + "to " + "calculate " + "total " + "line " + "item " + "amount. " + "Must " + "match " + "unit " + "of " + "measurement. " + "Represents " + "actual " + "order " + "quantity " + "for " + "delivery.", + "example": 1, + "type": "string", + }, + "rate": { + "description": "Unit " + "price " + "per " + "item/service. " + "Used " + "to " + "calculate " + "total " + "line " + "item " + "amount. " + "Must " + "be in " + "purchase " + "order " + "currency. " + "Tax " + "inclusion " + "depends " + "on " + "is_inclusive_tax " + "setting. " + "Affects " + "pricing " + "calculations " + "and " + "vendor " + "billing.", + "example": 112, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "reverse " + "charge " + "tax " + "for " + "the " + "line " + "item. " + "Used " + "when " + "buyer " + "is " + "responsible " + "for " + "paying " + "tax " + "instead " + "of " + "vendor. " + "Applicable " + "for " + "unregistered " + "vendors " + "or " + "specific " + "tax " + "regulations. " + "Must " + "reference " + "valid " + "reverse " + "charge " + "tax " + "configuration.", + "example": 460000000026068, + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "ID of the Reverse Charge", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "tax " + "for " + "the " + "line " + "item. " + "Determines " + "tax " + "rate, " + "name, " + "and " + "treatment " + "for " + "calculations. " + "Used " + "in " + "tax " + "amount " + "computation " + "and " + "display " + "on " + "purchase " + "order. " + "Obtain " + "from " + "taxes " + "API.", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "example": 90300000087370, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "quantity " + "(e.g., " + "Nos, " + "kgs, " + "hours, " + "meters). " + "Should " + "match " + "vendor " + "pricing " + "structure. " + "Used " + "for " + "quantity " + "calculations " + "and " + "pricing.", + "example": "Nos", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier of the business " + "location or branch where this purchase " + "order is being created and managed. " + "This field is used to associate the " + "purchase order with a specific " + "location within your organization, " + "enabling location-based reporting, " + "inventory tracking, and multi-location " + "business operations. The location " + "information affects how the purchase " + "order is processed and where inventory " + "is received.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional information, instructions, or " + "comments to be displayed on the purchase " + "order document. This field is typically used " + "for delivery instructions, special " + "requirements, vendor communications, or any " + "other information relevant to the purchase " + "order. The notes appear on the purchase " + "order PDF and are visible to the vendor.", + "example": "Please deliver as soon as possible.", + "type": "string", + }, + "notes_default": {"description": "Default notes for purchase order", "type": "string"}, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Unique identifier of the pricebook to " + "be used for this purchase order. The " + "pricebook contains predefined pricing " + "information for items and services. " + "This field is optional and if not " + "specified, the default pricebook will " + "be used. You can obtain the pricebook " + "ID by listing all available " + "pricebooks in your organization. " + "Ensure the pricebook exists and " + "contains the relevant pricing " + "information before referencing its ID " + "here.", + "example": 460000000026089, + "type": "string", + }, + "purchaseorder_number": { + "description": "Unique identifier for the " + "purchase order. This field is " + "mandatory when auto number " + "generation is disabled for " + "your organization. If auto " + "numbering is enabled, this " + "field can be left empty as " + "the system will automatically " + "generate a sequential " + "purchase order number. When " + "manually specifying a number, " + "ensure it follows your " + "organization's numbering " + "convention and is unique " + "across all purchase orders.", + "example": "PO-00001", + "type": "string", + }, + "reference_number": { + "description": "External reference number or " + "identifier for the purchase " + "order. This field is optional and " + "can be used to store additional " + "reference information such as " + "vendor order numbers, internal " + "tracking codes, or any other " + "external system identifiers. This " + "reference number will be " + "displayed on the purchase order " + "document and can be used for " + "cross-referencing with external " + "systems or internal tracking " + "purposes.", + "example": "ER/0034", + "type": "string", + }, + "salesorder_id": { + "description": "Unique identifier of the sales order " + "that is linked to this purchase " + "order. This field establishes a " + "connection between the sales order " + "and purchase order, typically used " + "in drop-shipping scenarios where you " + "need to procure items to fulfill a " + "customer's sales order. The linked " + "sales order information may be " + "displayed on the purchase order for " + "vendor reference and internal " + "tracking purposes.", + "example": "460000124728314", + "format": "int64", + "type": "integer", + }, + "ship_via": {"description": "Shipment Preference", "type": "string"}, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "VAT treatment for the purchase " + "order. Choose whether the vendor " + "falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier of the PDF template " + "linked to the purchase order. Obtain " + "this value from the `template_id` " + "field in the response of the GET " + "`/purchaseorders/templates` API for " + "your organization. Determines which " + "template is used for the purchase " + "order PDF document, controlling the " + "layout, formatting, and visual " + "appearance of the generated purchase " + "order.", + "example": "460000000011003", + "type": "string", + }, + "terms": { + "description": "Terms and conditions text to be displayed on " + "the purchase order document. This field is " + "used to specify payment terms, delivery " + "conditions, return policies, warranty " + "information, or any other legal or business " + "terms that apply to this transaction. The " + "terms appear on the purchase order PDF and " + "form part of the contractual agreement with " + "the vendor.", + "example": "Thanks for your business.", + "type": "string", + }, + "terms_default": {"description": "Default terms for Purchase Orders", "type": "string"}, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "purchase order. VAT treatment " + "denotes the location of the vendor, " + "if the vendor resides in UK then the " + "VAT treatment is uk. If " + "the vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "Unique identifier of the vendor for whom " + "the purchase order is being created. " + "This value is mandatory to associate the " + "purchase order with a specific vendor in " + "your organization. You can obtain the " + "vendor ID by listing all vendors using " + "the contacts API. Ensure the vendor " + "exists before referencing their ID here.", + "example": "460000000026049", + "type": "string", + }, + }, + "required": ["vendor_id", "line_items"], + "type": "object", + }, + "UPDATEPURCHASEORDERBYCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "attention": { + "description": "The name or designation of the specific " + "person who should be contacted or " + "notified regarding the delivery of goods " + "or services from this purchase order. " + "This field is typically used to specify " + "the primary contact person at the " + "delivery location, such as a warehouse " + "manager, office administrator, or " + "project coordinator who will receive and " + "process the delivered items.", + "type": "string", + }, + "billing_address_id": { + "description": "Unique identifier of the " + "billing address to be used for " + "this purchase order. The " + "billing address determines " + "where invoices and related " + "documents will be sent. This " + "field is optional and if not " + "specified, the default billing " + "address from your organization " + "settings will be used. You can " + "obtain the billing address ID " + "by listing all available " + "addresses in your organization. " + "Ensure the address exists and " + "contains the correct billing " + "information before referencing " + "its ID here.", + "example": "460000000017491", + "format": "int64", + "type": "integer", + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person", + "example": 460000000031001, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "crm_custom_reference_id": { + "description": "ID of CRM Custom Reference", + "format": "int64", + "type": "integer", + }, + "crm_owner_id": { + "description": "Unique identifier of the CRM owner " + "assigned to this purchase order. This " + "field links the purchase order to a " + "specific CRM user who is responsible " + "for managing the vendor relationship " + "and overseeing the procurement " + "process. The CRM owner can track, " + "follow up, and manage all aspects of " + "this purchase order within the CRM " + "system.", + "type": "string", + }, + "currency_id": { + "description": "Unique identifier of the currency for " + "the purchase order. This value is " + "mandatory to specify the currency in " + "which the purchase order amounts will " + "be displayed and processed. You can " + "obtain the currency ID by listing all " + "available currencies using the GET " + "/settings/currencies API. Ensure the " + "currency exists and is properly " + "configured in your organization before " + "referencing its ID here.", + "example": "460000000000099", + "type": "string", + }, + "custom_fields": { + "description": "Custom fields for purchase order.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "The date when the purchase order was created " + "or issued. This is the official date that " + "appears on the purchase order document and is " + "used for record-keeping, reporting, and " + "tracking purposes. The date should be in " + "YYYY-MM-DD format and typically represents " + "when the purchase order was authorized and " + "sent to the vendor.", + "example": "2014-02-10", + "type": "string", + }, + "delivery_customer_id": { + "description": "Unique identifier of the " + "customer for whom the goods " + "or services in this purchase " + "order are being procured. " + "This field is used when the " + "purchase order is created on " + "behalf of a customer, such as " + "in drop-shipping scenarios or " + "when procuring items for " + "specific customer projects. " + "The customer information may " + "be displayed on the purchase " + "order for vendor reference.", + "type": "string", + }, + "delivery_date": { + "description": "The expected delivery date when the " + "goods or services ordered in this " + "purchase order should be received. " + "This date is used for planning, " + "scheduling, and tracking deliveries. " + "It helps in managing inventory, " + "coordinating with vendors, and " + "ensuring timely receipt of ordered " + "items. The date should be in " + "YYYY-MM-DD format and is typically " + "communicated to the vendor as part " + "of the purchase order terms.", + "example": "2014-02-10", + "type": "string", + }, + "delivery_org_address_id": { + "description": "Unique identifier of the " + "organization address where " + "the goods or services from " + "this purchase order should " + "be delivered. This field " + "specifies the delivery " + "location within your " + "organization, such as a " + "warehouse, office, or " + "branch location. The " + "address details are " + "retrieved from your " + "organization's address " + "book and displayed on the " + "purchase order for vendor " + "reference.", + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "discount": { + "description": "The discount amount or percentage to be " + "applied to the purchase order total. This " + "can be specified as a fixed amount or " + "percentage value. Discounts are typically " + "offered by vendors for bulk purchases, " + "early payments, or promotional purposes. " + "The discount reduces the total amount " + "payable and affects the final purchase " + "order total.", + "example": "10", + "type": "string", + }, + "discount_account_id": { + "description": "Unique identifier of the " + "accounting account where the " + "discount amount will be " + "recorded. This account is used " + "to track and categorize " + "discount expenses in your " + "general ledger. The discount " + "account should be configured " + "as an expense or " + "contra-revenue account to " + "properly reflect the impact of " + "discounts on your financial " + "statements.", + "example": "460000000011105", + "type": "string", + }, + "documents": { + "description": "Array of documents attached to the purchase order.", + "items": { + "properties": { + "document_id": { + "description": "ID of the Document", + "format": "int64", + "type": "integer", + }, + "file_name": { + "description": "Name " + "of " + "the " + "attached " + "document " + "file. " + "Includes " + "file " + "extension " + "and " + "represents " + "the " + "original " + "filename " + "as " + "uploaded. " + "Used " + "for " + "display " + "purposes " + "and " + "file " + "identification " + "in " + "the " + "system.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "due_date": { + "description": "The expected delivery date when the goods " + "or services ordered in this purchase " + "order should be received. This date is " + "used for planning, scheduling, and " + "tracking deliveries. It helps in managing " + "inventory, coordinating with vendors, and " + "ensuring timely receipt of ordered items. " + "The date should be in YYYY-MM-DD format.", + "type": "string", + }, + "exchange_rate": { + "description": "The currency exchange rate used to " + "convert the purchase order amounts " + "from the vendor's currency to your " + "organization's base currency. This " + "rate is applied when the purchase " + "order is created in a foreign " + "currency. A value of 1 indicates the " + "same currency as your base currency. " + "This rate affects all monetary " + "calculations and reporting for this " + "purchase order.", + "example": 1, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Boolean flag that " + "determines whether the " + "discount is applied before " + "or after tax calculations. " + "When set to true, the " + "discount is applied to the " + "subtotal before tax is " + "calculated, resulting in " + "tax being calculated on the " + "discounted amount. When set " + "to false, the discount is " + "applied after tax " + "calculations, which may " + "affect the final total " + "differently depending on " + "your tax configuration.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Boolean flag that specifies " + "whether the line item rates " + "include or exclude tax amounts. " + "When set to true, the specified " + "rates are inclusive of tax, " + "meaning the tax amount is already " + "included in the rate. When set to " + "false, the rates are exclusive of " + "tax, and tax will be calculated " + "and added separately. This " + "setting affects how tax " + "calculations are performed and " + "displayed on the purchase order.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "is_update_customer": { + "description": "Check if customer should be updated", + "type": "string", + }, + "line_items": { + "description": "Line items of purchase order.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "of " + "the " + "accounting " + "account " + "for " + "the " + "line " + "item. " + "Mandatory " + "for " + "non-inventory " + "items/services. " + "Determines " + "expense " + "categorization " + "in " + "general " + "ledger.", + "example": "460000000074003", + "type": "string", + }, + "acquisition_vat_id": { + "description": "ID of the VAT Acquistion", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "Additional " + "details, " + "specifications, " + "or " + "notes " + "about " + "the " + "line " + "item. " + "Can " + "include " + "technical " + "specs, " + "requirements, " + "delivery " + "instructions. " + "Appears " + "on " + "purchase " + "order " + "document " + "for " + "vendor " + "reference.", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN or SAC Code for the Item", + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_custom_fields": { + "items": { + "properties": { + "index": { + "description": "Index of the Custom Field", + "example": 1, + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "item " + "or " + "service " + "in " + "the " + "line " + "item. " + "Mandatory " + "field " + "that " + "links " + "to " + "the " + "item " + "catalog. " + "Determines " + "item " + "details, " + "pricing, " + "and " + "inventory " + "tracking. " + "Obtain " + "from " + "GET " + "/items " + "API.", + "example": "460000000027009", + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "of " + "line " + "item " + "within " + "purchase " + "order. " + "Determines " + "display " + "order " + "on " + "documents " + "and " + "reports. " + "Typically " + "numbered " + "sequentially " + "from " + "0 " + "or " + "1. " + "Maintains " + "consistency " + "across " + "related " + "documents.", + "example": 0, + "type": "integer", + }, + "line_item_id": { + "description": "ID " + "of " + "the " + "line " + "item. " + "Mandatory " + "if " + "the " + "existing " + "line " + "item " + "has " + "to " + "be " + "updated. " + "If " + "empty, " + "a " + "new " + "line " + "item " + "will " + "be " + "created.", + "example": "460000000074009", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "of " + "the " + "business " + "location " + "or " + "branch " + "where " + "this " + "purchase " + "order " + "is " + "being " + "created " + "and " + "managed. " + "This " + "field " + "is " + "used " + "to " + "associate " + "the " + "purchase " + "order " + "with " + "a " + "specific " + "location " + "within " + "your " + "organization, " + "enabling " + "location-based " + "reporting, " + "inventory " + "tracking, " + "and " + "multi-location " + "business " + "operations. " + "The " + "location " + "information " + "affects " + "how " + "the " + "purchase " + "order " + "is " + "processed " + "and " + "where " + "inventory " + "is " + "received.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Display " + "name " + "of " + "the " + "line " + "item " + "on " + "the " + "purchase " + "order. " + "Auto-populated " + "from " + "item " + "catalog " + "when " + "item_id " + "is " + "specified. " + "Can " + "be " + "customized. " + "Used " + "for " + "vendor " + "reference " + "and " + "documentation.", + "example": "Hard Drive", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "being " + "ordered. " + "Used " + "with " + "rate " + "to " + "calculate " + "total " + "line " + "item " + "amount. " + "Must " + "match " + "unit " + "of " + "measurement. " + "Represents " + "actual " + "order " + "quantity " + "for " + "delivery.", + "example": 1, + "type": "string", + }, + "rate": { + "description": "Unit " + "price " + "per " + "item/service. " + "Used " + "to " + "calculate " + "total " + "line " + "item " + "amount. " + "Must " + "be in " + "purchase " + "order " + "currency. " + "Tax " + "inclusion " + "depends " + "on " + "is_inclusive_tax " + "setting. " + "Affects " + "pricing " + "calculations " + "and " + "vendor " + "billing.", + "example": 112, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "reverse " + "charge " + "tax " + "for " + "the " + "line " + "item. " + "Used " + "when " + "buyer " + "is " + "responsible " + "for " + "paying " + "tax " + "instead " + "of " + "vendor. " + "Applicable " + "for " + "unregistered " + "vendors " + "or " + "specific " + "tax " + "regulations. " + "Must " + "reference " + "valid " + "reverse " + "charge " + "tax " + "configuration.", + "example": 460000000026068, + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "ID of the Reverse Charge", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "tax " + "for " + "the " + "line " + "item. " + "Determines " + "tax " + "rate, " + "name, " + "and " + "treatment " + "for " + "calculations. " + "Used " + "in " + "tax " + "amount " + "computation " + "and " + "display " + "on " + "purchase " + "order. " + "Obtain " + "from " + "taxes " + "API.", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "example": 90300000087370, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "quantity " + "(e.g., " + "Nos, " + "kgs, " + "hours, " + "meters). " + "Should " + "match " + "vendor " + "pricing " + "structure. " + "Used " + "for " + "quantity " + "calculations " + "and " + "pricing.", + "example": "Nos", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier of the business " + "location or branch where this purchase " + "order is being created and managed. " + "This field is used to associate the " + "purchase order with a specific " + "location within your organization, " + "enabling location-based reporting, " + "inventory tracking, and multi-location " + "business operations. The location " + "information affects how the purchase " + "order is processed and where inventory " + "is received.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional information, instructions, or " + "comments to be displayed on the purchase " + "order document. This field is typically used " + "for delivery instructions, special " + "requirements, vendor communications, or any " + "other information relevant to the purchase " + "order. The notes appear on the purchase " + "order PDF and are visible to the vendor.", + "example": "Please deliver as soon as possible.", + "type": "string", + }, + "notes_default": {"description": "Default notes for purchase order", "type": "string"}, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Unique identifier of the pricebook to " + "be used for this purchase order. The " + "pricebook contains predefined pricing " + "information for items and services. " + "This field is optional and if not " + "specified, the default pricebook will " + "be used. You can obtain the pricebook " + "ID by listing all available " + "pricebooks in your organization. " + "Ensure the pricebook exists and " + "contains the relevant pricing " + "information before referencing its ID " + "here.", + "example": 460000000026089, + "type": "string", + }, + "purchaseorder_number": { + "description": "Unique identifier for the " + "purchase order. This field is " + "mandatory when auto number " + "generation is disabled for " + "your organization. If auto " + "numbering is enabled, this " + "field can be left empty as " + "the system will automatically " + "generate a sequential " + "purchase order number. When " + "manually specifying a number, " + "ensure it follows your " + "organization's numbering " + "convention and is unique " + "across all purchase orders.", + "example": "PO-00001", + "type": "string", + }, + "reference_number": { + "description": "External reference number or " + "identifier for the purchase " + "order. This field is optional and " + "can be used to store additional " + "reference information such as " + "vendor order numbers, internal " + "tracking codes, or any other " + "external system identifiers. This " + "reference number will be " + "displayed on the purchase order " + "document and can be used for " + "cross-referencing with external " + "systems or internal tracking " + "purposes.", + "example": "ER/0034", + "type": "string", + }, + "salesorder_id": { + "description": "Unique identifier of the sales order " + "that is linked to this purchase " + "order. This field establishes a " + "connection between the sales order " + "and purchase order, typically used " + "in drop-shipping scenarios where you " + "need to procure items to fulfill a " + "customer's sales order. The linked " + "sales order information may be " + "displayed on the purchase order for " + "vendor reference and internal " + "tracking purposes.", + "example": "460000124728314", + "format": "int64", + "type": "integer", + }, + "ship_via": {"description": "Shipment Preference", "type": "string"}, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "VAT treatment for the purchase " + "order. Choose whether the vendor " + "falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier of the PDF template " + "linked to the purchase order. Obtain " + "this value from the `template_id` " + "field in the response of the GET " + "`/purchaseorders/templates` API for " + "your organization. Determines which " + "template is used for the purchase " + "order PDF document, controlling the " + "layout, formatting, and visual " + "appearance of the generated purchase " + "order.", + "example": "460000000011003", + "type": "string", + }, + "terms": { + "description": "Terms and conditions text to be displayed on " + "the purchase order document. This field is " + "used to specify payment terms, delivery " + "conditions, return policies, warranty " + "information, or any other legal or business " + "terms that apply to this transaction. The " + "terms appear on the purchase order PDF and " + "form part of the contractual agreement with " + "the vendor.", + "example": "Thanks for your business.", + "type": "string", + }, + "terms_default": {"description": "Default terms for Purchase Orders", "type": "string"}, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "purchase order. VAT treatment " + "denotes the location of the vendor, " + "if the vendor resides in UK then the " + "VAT treatment is uk. If " + "the vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "Unique identifier of the vendor for whom " + "the purchase order is being created. " + "This value is mandatory to associate the " + "purchase order with a specific vendor in " + "your organization. You can obtain the " + "vendor ID by listing all vendors using " + "the contacts API. Ensure the vendor " + "exists before referencing their ID here.", + "example": "460000000026049", + "type": "string", + }, + }, + "required": ["vendor_id", "line_items"], + "type": "object", + }, + "UPDATEPURCHASEORDER_REQUEST_BODY_SCHEMA": { + "properties": { + "attention": { + "description": "The name or designation of the specific " + "person who should be contacted or " + "notified regarding the delivery of goods " + "or services from this purchase order. " + "This field is typically used to specify " + "the primary contact person at the " + "delivery location, such as a warehouse " + "manager, office administrator, or " + "project coordinator who will receive and " + "process the delivered items.", + "type": "string", + }, + "billing_address_id": { + "description": "Unique identifier of the " + "billing address to be used for " + "this purchase order. The " + "billing address determines " + "where invoices and related " + "documents will be sent. This " + "field is optional and if not " + "specified, the default billing " + "address from your organization " + "settings will be used. You can " + "obtain the billing address ID " + "by listing all available " + "addresses in your organization. " + "Ensure the address exists and " + "contains the correct billing " + "information before referencing " + "its ID here.", + "example": "460000000017491", + "format": "int64", + "type": "integer", + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person", + "example": 460000000031001, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "crm_custom_reference_id": { + "description": "ID of CRM Custom Reference", + "format": "int64", + "type": "integer", + }, + "crm_owner_id": { + "description": "Unique identifier of the CRM owner " + "assigned to this purchase order. This " + "field links the purchase order to a " + "specific CRM user who is responsible " + "for managing the vendor relationship " + "and overseeing the procurement " + "process. The CRM owner can track, " + "follow up, and manage all aspects of " + "this purchase order within the CRM " + "system.", + "type": "string", + }, + "currency_id": { + "description": "Unique identifier of the currency for " + "the purchase order. This value is " + "mandatory to specify the currency in " + "which the purchase order amounts will " + "be displayed and processed. You can " + "obtain the currency ID by listing all " + "available currencies using the GET " + "/settings/currencies API. Ensure the " + "currency exists and is properly " + "configured in your organization before " + "referencing its ID here.", + "example": "460000000000099", + "type": "string", + }, + "custom_fields": { + "description": "Custom fields for purchase order.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "The date when the purchase order was created " + "or issued. This is the official date that " + "appears on the purchase order document and is " + "used for record-keeping, reporting, and " + "tracking purposes. The date should be in " + "YYYY-MM-DD format and typically represents " + "when the purchase order was authorized and " + "sent to the vendor.", + "example": "2014-02-10", + "type": "string", + }, + "delivery_customer_id": { + "description": "Unique identifier of the " + "customer for whom the goods " + "or services in this purchase " + "order are being procured. " + "This field is used when the " + "purchase order is created on " + "behalf of a customer, such as " + "in drop-shipping scenarios or " + "when procuring items for " + "specific customer projects. " + "The customer information may " + "be displayed on the purchase " + "order for vendor reference.", + "type": "string", + }, + "delivery_date": { + "description": "The expected delivery date when the " + "goods or services ordered in this " + "purchase order should be received. " + "This date is used for planning, " + "scheduling, and tracking deliveries. " + "It helps in managing inventory, " + "coordinating with vendors, and " + "ensuring timely receipt of ordered " + "items. The date should be in " + "YYYY-MM-DD format and is typically " + "communicated to the vendor as part " + "of the purchase order terms.", + "example": "2014-02-10", + "type": "string", + }, + "delivery_org_address_id": { + "description": "Unique identifier of the " + "organization address where " + "the goods or services from " + "this purchase order should " + "be delivered. This field " + "specifies the delivery " + "location within your " + "organization, such as a " + "warehouse, office, or " + "branch location. The " + "address details are " + "retrieved from your " + "organization's address " + "book and displayed on the " + "purchase order for vendor " + "reference.", + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "discount": { + "description": "The discount amount or percentage to be " + "applied to the purchase order total. This " + "can be specified as a fixed amount or " + "percentage value. Discounts are typically " + "offered by vendors for bulk purchases, " + "early payments, or promotional purposes. " + "The discount reduces the total amount " + "payable and affects the final purchase " + "order total.", + "example": "10", + "type": "string", + }, + "discount_account_id": { + "description": "Unique identifier of the " + "accounting account where the " + "discount amount will be " + "recorded. This account is used " + "to track and categorize " + "discount expenses in your " + "general ledger. The discount " + "account should be configured " + "as an expense or " + "contra-revenue account to " + "properly reflect the impact of " + "discounts on your financial " + "statements.", + "example": "460000000011105", + "type": "string", + }, + "documents": { + "description": "Array of documents attached to the purchase order.", + "items": { + "properties": { + "document_id": { + "description": "ID of the Document", + "format": "int64", + "type": "integer", + }, + "file_name": { + "description": "Name " + "of " + "the " + "attached " + "document " + "file. " + "Includes " + "file " + "extension " + "and " + "represents " + "the " + "original " + "filename " + "as " + "uploaded. " + "Used " + "for " + "display " + "purposes " + "and " + "file " + "identification " + "in " + "the " + "system.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "due_date": { + "description": "The expected delivery date when the goods " + "or services ordered in this purchase " + "order should be received. This date is " + "used for planning, scheduling, and " + "tracking deliveries. It helps in managing " + "inventory, coordinating with vendors, and " + "ensuring timely receipt of ordered items. " + "The date should be in YYYY-MM-DD format.", + "type": "string", + }, + "exchange_rate": { + "description": "The currency exchange rate used to " + "convert the purchase order amounts " + "from the vendor's currency to your " + "organization's base currency. This " + "rate is applied when the purchase " + "order is created in a foreign " + "currency. A value of 1 indicates the " + "same currency as your base currency. " + "This rate affects all monetary " + "calculations and reporting for this " + "purchase order.", + "example": 1, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Boolean flag that " + "determines whether the " + "discount is applied before " + "or after tax calculations. " + "When set to true, the " + "discount is applied to the " + "subtotal before tax is " + "calculated, resulting in " + "tax being calculated on the " + "discounted amount. When set " + "to false, the discount is " + "applied after tax " + "calculations, which may " + "affect the final total " + "differently depending on " + "your tax configuration.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Boolean flag that specifies " + "whether the line item rates " + "include or exclude tax amounts. " + "When set to true, the specified " + "rates are inclusive of tax, " + "meaning the tax amount is already " + "included in the rate. When set to " + "false, the rates are exclusive of " + "tax, and tax will be calculated " + "and added separately. This " + "setting affects how tax " + "calculations are performed and " + "displayed on the purchase order.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "is_update_customer": { + "description": "Check if customer should be updated", + "type": "string", + }, + "line_items": { + "description": "Line items of purchase order.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "of " + "the " + "accounting " + "account " + "for " + "the " + "line " + "item. " + "Mandatory " + "for " + "non-inventory " + "items/services. " + "Determines " + "expense " + "categorization " + "in " + "general " + "ledger.", + "example": "460000000074003", + "type": "string", + }, + "acquisition_vat_id": { + "description": "ID of the VAT Acquistion", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "Additional " + "details, " + "specifications, " + "or " + "notes " + "about " + "the " + "line " + "item. " + "Can " + "include " + "technical " + "specs, " + "requirements, " + "delivery " + "instructions. " + "Appears " + "on " + "purchase " + "order " + "document " + "for " + "vendor " + "reference.", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN or SAC Code for the Item", + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_custom_fields": { + "items": { + "properties": { + "index": { + "description": "Index of the Custom Field", + "example": 1, + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "of " + "the " + "item " + "or " + "service " + "in " + "the " + "line " + "item. " + "Mandatory " + "field " + "that " + "links " + "to " + "the " + "item " + "catalog. " + "Determines " + "item " + "details, " + "pricing, " + "and " + "inventory " + "tracking. " + "Obtain " + "from " + "GET " + "/items " + "API.", + "example": "460000000027009", + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "of " + "line " + "item " + "within " + "purchase " + "order. " + "Determines " + "display " + "order " + "on " + "documents " + "and " + "reports. " + "Typically " + "numbered " + "sequentially " + "from " + "0 " + "or " + "1. " + "Maintains " + "consistency " + "across " + "related " + "documents.", + "example": 0, + "type": "integer", + }, + "line_item_id": { + "description": "ID " + "of " + "the " + "line " + "item. " + "Mandatory " + "if " + "the " + "existing " + "line " + "item " + "has " + "to " + "be " + "updated. " + "If " + "empty, " + "a " + "new " + "line " + "item " + "will " + "be " + "created.", + "example": "460000000074009", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "of " + "the " + "business " + "location " + "or " + "branch " + "where " + "this " + "purchase " + "order " + "is " + "being " + "created " + "and " + "managed. " + "This " + "field " + "is " + "used " + "to " + "associate " + "the " + "purchase " + "order " + "with " + "a " + "specific " + "location " + "within " + "your " + "organization, " + "enabling " + "location-based " + "reporting, " + "inventory " + "tracking, " + "and " + "multi-location " + "business " + "operations. " + "The " + "location " + "information " + "affects " + "how " + "the " + "purchase " + "order " + "is " + "processed " + "and " + "where " + "inventory " + "is " + "received.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Display " + "name " + "of " + "the " + "line " + "item " + "on " + "the " + "purchase " + "order. " + "Auto-populated " + "from " + "item " + "catalog " + "when " + "item_id " + "is " + "specified. " + "Can " + "be " + "customized. " + "Used " + "for " + "vendor " + "reference " + "and " + "documentation.", + "example": "Hard Drive", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "being " + "ordered. " + "Used " + "with " + "rate " + "to " + "calculate " + "total " + "line " + "item " + "amount. " + "Must " + "match " + "unit " + "of " + "measurement. " + "Represents " + "actual " + "order " + "quantity " + "for " + "delivery.", + "example": 1, + "type": "string", + }, + "rate": { + "description": "Unit " + "price " + "per " + "item/service. " + "Used " + "to " + "calculate " + "total " + "line " + "item " + "amount. " + "Must " + "be in " + "purchase " + "order " + "currency. " + "Tax " + "inclusion " + "depends " + "on " + "is_inclusive_tax " + "setting. " + "Affects " + "pricing " + "calculations " + "and " + "vendor " + "billing.", + "example": 112, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "reverse " + "charge " + "tax " + "for " + "the " + "line " + "item. " + "Used " + "when " + "buyer " + "is " + "responsible " + "for " + "paying " + "tax " + "instead " + "of " + "vendor. " + "Applicable " + "for " + "unregistered " + "vendors " + "or " + "specific " + "tax " + "regulations. " + "Must " + "reference " + "valid " + "reverse " + "charge " + "tax " + "configuration.", + "example": 460000000026068, + "type": "string", + }, + "reverse_charge_vat_id": { + "description": "ID of the Reverse Charge", + "type": "string", + "x-node_available_in": ["uk", "eu"], + "x-node_unavailable_in": [], + }, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "au", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Unique " + "identifier " + "of " + "the " + "tax " + "for " + "the " + "line " + "item. " + "Determines " + "tax " + "rate, " + "name, " + "and " + "treatment " + "for " + "calculations. " + "Used " + "in " + "tax " + "amount " + "computation " + "and " + "display " + "on " + "purchase " + "order. " + "Obtain " + "from " + "taxes " + "API.", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "example": 90300000087370, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "quantity " + "(e.g., " + "Nos, " + "kgs, " + "hours, " + "meters). " + "Should " + "match " + "vendor " + "pricing " + "structure. " + "Used " + "for " + "quantity " + "calculations " + "and " + "pricing.", + "example": "Nos", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier of the business " + "location or branch where this purchase " + "order is being created and managed. " + "This field is used to associate the " + "purchase order with a specific " + "location within your organization, " + "enabling location-based reporting, " + "inventory tracking, and multi-location " + "business operations. The location " + "information affects how the purchase " + "order is processed and where inventory " + "is received.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional information, instructions, or " + "comments to be displayed on the purchase " + "order document. This field is typically used " + "for delivery instructions, special " + "requirements, vendor communications, or any " + "other information relevant to the purchase " + "order. The notes appear on the purchase " + "order PDF and are visible to the vendor.", + "example": "Please deliver as soon as possible.", + "type": "string", + }, + "notes_default": {"description": "Default notes for purchase order", "type": "string"}, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Unique identifier of the pricebook to " + "be used for this purchase order. The " + "pricebook contains predefined pricing " + "information for items and services. " + "This field is optional and if not " + "specified, the default pricebook will " + "be used. You can obtain the pricebook " + "ID by listing all available " + "pricebooks in your organization. " + "Ensure the pricebook exists and " + "contains the relevant pricing " + "information before referencing its ID " + "here.", + "example": 460000000026089, + "type": "string", + }, + "purchaseorder_number": { + "description": "Unique identifier for the " + "purchase order. This field is " + "mandatory when auto number " + "generation is disabled for " + "your organization. If auto " + "numbering is enabled, this " + "field can be left empty as " + "the system will automatically " + "generate a sequential " + "purchase order number. When " + "manually specifying a number, " + "ensure it follows your " + "organization's numbering " + "convention and is unique " + "across all purchase orders.", + "example": "PO-00001", + "type": "string", + }, + "reference_number": { + "description": "External reference number or " + "identifier for the purchase " + "order. This field is optional and " + "can be used to store additional " + "reference information such as " + "vendor order numbers, internal " + "tracking codes, or any other " + "external system identifiers. This " + "reference number will be " + "displayed on the purchase order " + "document and can be used for " + "cross-referencing with external " + "systems or internal tracking " + "purposes.", + "example": "ER/0034", + "type": "string", + }, + "salesorder_id": { + "description": "Unique identifier of the sales order " + "that is linked to this purchase " + "order. This field establishes a " + "connection between the sales order " + "and purchase order, typically used " + "in drop-shipping scenarios where you " + "need to procure items to fulfill a " + "customer's sales order. The linked " + "sales order information may be " + "displayed on the purchase order for " + "vendor reference and internal " + "tracking purposes.", + "example": "460000124728314", + "format": "int64", + "type": "integer", + }, + "ship_via": {"description": "Shipment Preference", "type": "string"}, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "VAT treatment for the purchase " + "order. Choose whether the vendor " + "falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier of the PDF template " + "linked to the purchase order. Obtain " + "this value from the `template_id` " + "field in the response of the GET " + "`/purchaseorders/templates` API for " + "your organization. Determines which " + "template is used for the purchase " + "order PDF document, controlling the " + "layout, formatting, and visual " + "appearance of the generated purchase " + "order.", + "example": "460000000011003", + "type": "string", + }, + "terms": { + "description": "Terms and conditions text to be displayed on " + "the purchase order document. This field is " + "used to specify payment terms, delivery " + "conditions, return policies, warranty " + "information, or any other legal or business " + "terms that apply to this transaction. The " + "terms appear on the purchase order PDF and " + "form part of the contractual agreement with " + "the vendor.", + "example": "Thanks for your business.", + "type": "string", + }, + "terms_default": {"description": "Default terms for Purchase Orders", "type": "string"}, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "purchase order. VAT treatment " + "denotes the location of the vendor, " + "if the vendor resides in UK then the " + "VAT treatment is uk. If " + "the vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "Unique identifier of the vendor for whom " + "the purchase order is being created. " + "This value is mandatory to associate the " + "purchase order with a specific vendor in " + "your organization. You can obtain the " + "vendor ID by listing all vendors using " + "the contacts API. Ensure the vendor " + "exists before referencing their ID here.", + "example": "460000000026049", + "type": "string", + }, + }, + "required": ["vendor_id", "line_items"], + "type": "object", + }, + "UPDATECUSTOMFIELDSPURCHASEORDER_REQUEST_BODY_SCHEMA": { + "description": "Custom fields for purchase order.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "SENDPURCHASEORDEREMAIL_REQUEST_BODY_SCHEMA": { + "properties": { + "bcc_mail_ids": { + "description": "Array of email address of the recipients to be BCC ed.", + "example": ["mark@safInstruments.com"], + "items": {"type": "string"}, + "type": "array", + }, + "body": { + "description": "Body of the mail", + "example": "Dear Bowman and Co,

The purchase order " + "(PO-00001) is attached with this email. " + "

An overview of the purchase order is " + "available below:
Purchase Order # : PO-00001 " + "
Date : 10 Feb 2014
Amount : $112.00(in " + "USD)

Please go through it and confirm the " + "order. We look forward to working with you " + "again



Regards

Zillium " + "Inc

", + "type": "string", + }, + "cc_mail_ids": { + "description": "Array of email address of the recipients to be cced.", + "example": ["peterparker@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + "from_address_id": { + "description": "ID of From Address of the Email Address", + "example": "460000008392548", + "format": "int64", + "type": "integer", + }, + "mail_documents": { + "items": { + "properties": { + "document_id": { + "description": "ID of the Document", + "format": "int64", + "type": "integer", + }, + "file_name": { + "description": "Name " + "of " + "the " + "attached " + "document " + "file. " + "Includes " + "file " + "extension " + "and " + "represents " + "the " + "original " + "filename " + "as " + "uploaded. " + "Used " + "for " + "display " + "purposes " + "and " + "file " + "identification " + "in " + "the " + "system.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "send_from_org_email_id": { + "description": "Boolean to trigger the " + "email from the " + "organization's email " + "address.", + "example": True, + "type": "boolean", + }, + "subject": { + "description": "Subject of the mail.", + "example": "Purchase Order from Zillium Inc (PO #: PO-00001)", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email address of the recipients.", + "example": ["willsmith@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids", "body"], + "type": "object", + }, + "UPDATEPURCHASEORDERBILLINGADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Address associated with the Purchase Order", + "type": "string", + }, + "attention": { + "description": "The name or designation of the specific " + "person who should be contacted or " + "notified regarding the delivery of goods " + "or services from this purchase order. " + "This field is typically used to specify " + "the primary contact person at the " + "delivery location, such as a warehouse " + "manager, office administrator, or " + "project coordinator who will receive and " + "process the delivered items.", + "type": "string", + }, + "city": {"description": "City involved in the Address", "type": "string"}, + "country": {"description": "Country involved in the Address", "type": "string"}, + "fax": {"description": "Fax Number", "type": "string"}, + "is_update_customer": { + "description": "Check if customer should be updated", + "type": "string", + }, + "state": {"description": "State Involved in the Address", "type": "string"}, + "zip": {"description": "ZIP Code of the Address", "type": "string"}, + }, + "type": "object", + }, + "ADDPURCHASEORDERCOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "The description of the comment.", + "example": "This is a comment.", + "type": "string", + }, + "expected_delivery_date": { + "description": "The expected delivery date " + "when the goods or services " + "ordered in this purchase " + "order should be received. " + "This date is used for " + "planning, scheduling, and " + "tracking deliveries. It " + "helps in managing " + "inventory, coordinating " + "with vendors, and ensuring " + "timely receipt of ordered " + "items. The date should be " + "in YYYY-MM-DD format.", + "type": "string", + }, + }, + "required": ["description", "expected_delivery_date"], + "type": "object", + }, + "UPDATEPURCHASEORDERCOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "The description of the comment.", + "example": "This is a comment.", + "type": "string", + }, + "expected_delivery_date": { + "description": "The expected delivery date " + "when the goods or services " + "ordered in this purchase " + "order should be received. " + "This date is used for " + "planning, scheduling, and " + "tracking deliveries. It " + "helps in managing " + "inventory, coordinating " + "with vendors, and ensuring " + "timely receipt of ordered " + "items. The date should be " + "in YYYY-MM-DD format.", + "type": "string", + }, + }, + "type": "object", + }, + "CREATERECURRINGBILL_REQUEST_BODY_SCHEMA": { + "properties": { + "abn": {"type": "string", "x-node_available_in": ["au"], "x-node_unavailable_in": []}, + "currency_id": { + "description": "ID of the Currency", + "example": "460000000000099", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the custom field", "type": "integer"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "discount": { + "description": "Discount applied to the recurrence. It " + "can be either in % or in amount. E.g: " + "12.5% or 190.", + "example": "30%", + "type": "string", + }, + "discount_account_id": { + "description": "ID of the account associated with the discount account.", + "example": "460000000000403", + "type": "string", + }, + "end_date": { + "description": "Date on which recurring bill has to " + "expire. Can be left as empty to run " + "forever. Format [yyyy-mm-dd].", + "example": "2013-12-18", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_abn_quoted": { + "type": "string", + "x-node_available_in": ["au"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "To specify discount applied in before /after tax.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "is_reverse_charge_applied": { + "description": "Applicable for transactions where you pay reverse charge", + "example": True, + "type": "boolean", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_tds_applied": { + "description": "Check if TDS is applied", + "type": "boolean", + "x-node_available_in": ["in", "global", "au"], + "x-node_unavailable_in": [], + }, + "line_items": { + "description": "Line items of a recurrence bill.", + "items": { + "properties": { + "account_id": { + "description": "ID of the account associated with the line item.", + "example": "460000000000403", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "purchase " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "customer_id": {"description": "ID of the Customer", "type": "string"}, + "description": { + "description": "Description of the line item.", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "is_billable": { + "description": "Check if entity is Billable", + "example": False, + "type": "boolean", + }, + "item_custom_fields": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": { + "description": "Index of the custom field", + "type": "integer", + }, + "label": { + "description": "Label of the Custom Field", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "ID of the Item", + "example": "460000000054135", + "type": "string", + }, + "item_order": {"example": 1, "type": "integer"}, + "line_item_id": { + "description": "ID of the Line Item", + "example": "460000000067009", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "name": {"type": "string"}, + "product_type": { + "description": "Type " + "of " + "the " + "bill. " + "This " + "denotes " + "whether " + "the " + "bill " + "line " + "item " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "purchase. " + "This " + "only " + "need " + "to " + "be " + "specified " + "in " + "case " + "purchase " + "order " + "is " + "not " + "enabled. " + "Allowed " + "Values: " + " " + "digital_service, " + "goods " + "and " + "service.", + "type": "string", + "x-node_available_in": ["eu", "uk"], + "x-node_unavailable_in": [], + }, + "project_id": {"description": "ID of the Project", "type": "string"}, + "quantity": { + "description": "Quantity of the line item.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Rate of the line item.", + "example": 10, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "Reverse charge tax ID", + "example": 460000000038056, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "purchase " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "serial_numbers": {"items": {"type": "string"}, "type": "array"}, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "example": "460000000054178", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "example": "460000000054180", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group applied to the line item.", + "example": "460000000027005", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "TDS ID of the tax group applied to the line item", + "example": "460000000027001", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit of the Item", + "example": "kgs", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Notes for the Bill", + "example": "Thanks for your business.", + "type": "string", + }, + "payment_terms": { + "description": "Number Referring to Payment Terms", + "example": 0, + "type": "integer", + }, + "payment_terms_label": { + "description": "Label of the Payment Terms", + "example": "Due on Receipt", + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Enter ID of the price book.", + "example": 460000000038090, + "type": "string", + }, + "recurrence_frequency": { + "description": "Description for recurrence_frequency", + "example": "", + "type": "string", + }, + "recurrence_name": { + "description": "Name of the Recurring Bill. Max-length [100]", + "example": "Monthly Rental", + "type": "string", + }, + "repeat_every": { + "description": "Description for repeat_every", + "example": "", + "type": "string", + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "start_date": { + "description": "Start date of the recurring bill. Bills " + "will not be generated for dates prior " + "to the current date. Format " + "[yyyy-mm-dd].", + "example": "2013-11-18", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the bill. Choose " + "whether the vendor falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "terms": { + "description": "Terms and Conditions for the Bill", + "example": "Terms and conditions apply.", + "type": "string", + }, + "vat_reg_no": { + "description": "For UK Edition: VAT Registration " + "number of a contact with length should " + "be between 2 and 12 characters.
" + "For Avalara: If you are doing " + "sales in the European Union (EU) then " + "provide VAT Registration Number of your " + "customers here. This is used to " + "calculate VAT for B2B sales, from " + "Avalara.", + "type": "string", + "x-node_available_in": ["uk", "Avalara Integration"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "bill. VAT treatment denotes the " + "location of the vendor, if the " + "vendor resides in UK then the VAT " + "treatment is uk. If the " + "vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "ID of the vendor the bill has to be created.", + "example": "460000000038029", + "type": "string", + }, + }, + "required": [ + "vendor_id", + "recurrence_name", + "start_date", + "repeat_every", + "recurrence_frequency", + ], + "type": "object", + }, + "UPDATERECURRINGBILLCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "abn": {"type": "string", "x-node_available_in": ["au"], "x-node_unavailable_in": []}, + "currency_id": { + "description": "ID of the Currency", + "example": "460000000000099", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the custom field", "type": "integer"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "discount": { + "description": "Discount applied to the recurrence. It " + "can be either in % or in amount. E.g: " + "12.5% or 190.", + "example": "30%", + "type": "string", + }, + "discount_account_id": { + "description": "ID of the account associated with the discount account.", + "example": "460000000000403", + "type": "string", + }, + "end_date": { + "description": "Date on which recurring bill has to " + "expire. Can be left as empty to run " + "forever. Format [yyyy-mm-dd].", + "example": "2013-12-18", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_abn_quoted": { + "type": "string", + "x-node_available_in": ["au"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "To specify discount applied in before /after tax.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "is_reverse_charge_applied": { + "description": "Applicable for transactions where you pay reverse charge", + "example": True, + "type": "boolean", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_tds_applied": { + "description": "Check if TDS is applied", + "type": "boolean", + "x-node_available_in": ["in", "global", "au"], + "x-node_unavailable_in": [], + }, + "line_items": { + "description": "Line items of a recurrence bill.", + "items": { + "properties": { + "account_id": { + "description": "ID of the account associated with the line item.", + "example": "460000000000403", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "purchase " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "customer_id": {"description": "ID of the Customer", "type": "string"}, + "description": { + "description": "Description of the line item.", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "is_billable": { + "description": "Check if entity is Billable", + "example": False, + "type": "boolean", + }, + "item_custom_fields": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": { + "description": "Index of the custom field", + "type": "integer", + }, + "label": { + "description": "Label of the Custom Field", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "ID of the Item", + "example": "460000000054135", + "type": "string", + }, + "item_order": {"example": 1, "type": "integer"}, + "line_item_id": { + "description": "ID of the Line Item", + "example": "460000000067009", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "name": {"type": "string"}, + "product_type": { + "description": "Type " + "of " + "the " + "bill. " + "This " + "denotes " + "whether " + "the " + "bill " + "line " + "item " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "purchase. " + "This " + "only " + "need " + "to " + "be " + "specified " + "in " + "case " + "purchase " + "order " + "is " + "not " + "enabled. " + "Allowed " + "Values: " + " " + "digital_service, " + "goods " + "and " + "service.", + "type": "string", + "x-node_available_in": ["eu", "uk"], + "x-node_unavailable_in": [], + }, + "project_id": {"description": "ID of the Project", "type": "string"}, + "quantity": { + "description": "Quantity of the line item.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Rate of the line item.", + "example": 10, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "Reverse charge tax ID", + "example": 460000000038056, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "purchase " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "serial_numbers": {"items": {"type": "string"}, "type": "array"}, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "example": "460000000054178", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "example": "460000000054180", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group applied to the line item.", + "example": "460000000027005", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "TDS ID of the tax group applied to the line item", + "example": "460000000027001", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit of the Item", + "example": "kgs", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Notes for the Bill", + "example": "Thanks for your business.", + "type": "string", + }, + "payment_terms": { + "description": "Number Referring to Payment Terms", + "example": 0, + "type": "integer", + }, + "payment_terms_label": { + "description": "Label of the Payment Terms", + "example": "Due on Receipt", + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Enter ID of the price book.", + "example": 460000000038090, + "type": "string", + }, + "pricebook_name": {"description": "Name of the price book", "type": "string"}, + "recurrence_frequency": { + "description": "Description for recurrence_frequency", + "example": "", + "type": "string", + }, + "recurrence_name": { + "description": "Name of the Recurring Bill. Max-length [100]", + "example": "Monthly Rental", + "type": "string", + }, + "recurring_bill_id": {"example": 982000000567240, "type": "string"}, + "repeat_every": { + "description": "Description for repeat_every", + "example": "", + "type": "string", + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "start_date": { + "description": "Start date of the recurring bill. Bills " + "will not be generated for dates prior " + "to the current date. Format " + "[yyyy-mm-dd].", + "example": "2013-11-18", + "type": "string", + }, + "status": { + "description": "Status of the Recurring Bill", + "example": "active", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the bill. Choose " + "whether the vendor falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "terms": { + "description": "Terms and Conditions for the Bill", + "example": "Terms and conditions apply.", + "type": "string", + }, + "vat_reg_no": { + "description": "For UK Edition: VAT Registration " + "number of a contact with length should " + "be between 2 and 12 characters.
" + "For Avalara: If you are doing " + "sales in the European Union (EU) then " + "provide VAT Registration Number of your " + "customers here. This is used to " + "calculate VAT for B2B sales, from " + "Avalara.", + "type": "string", + "x-node_available_in": ["uk", "Avalara Integration"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "bill. VAT treatment denotes the " + "location of the vendor, if the " + "vendor resides in UK then the VAT " + "treatment is uk. If the " + "vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "ID of the vendor the bill has to be created.", + "example": "460000000038029", + "type": "string", + }, + }, + "required": [ + "vendor_id", + "recurrence_name", + "start_date", + "repeat_every", + "recurrence_frequency", + ], + "type": "object", + }, + "UPDATERECURRINGBILL_REQUEST_BODY_SCHEMA": { + "properties": { + "abn": {"type": "string", "x-node_available_in": ["au"], "x-node_unavailable_in": []}, + "currency_id": { + "description": "ID of the Currency", + "example": "460000000000099", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the custom field", "type": "integer"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "discount": { + "description": "Discount applied to the recurrence. It " + "can be either in % or in amount. E.g: " + "12.5% or 190.", + "example": "30%", + "type": "string", + }, + "discount_account_id": { + "description": "ID of the account associated with the discount account.", + "example": "460000000000403", + "type": "string", + }, + "end_date": { + "description": "Date on which recurring bill has to " + "expire. Can be left as empty to run " + "forever. Format [yyyy-mm-dd].", + "example": "2013-12-18", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_abn_quoted": { + "type": "string", + "x-node_available_in": ["au"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "To specify discount applied in before /after tax.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "is_reverse_charge_applied": { + "description": "Applicable for transactions where you pay reverse charge", + "example": True, + "type": "boolean", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_tds_applied": { + "description": "Check if TDS is applied", + "type": "boolean", + "x-node_available_in": ["in", "global", "au"], + "x-node_unavailable_in": [], + }, + "line_items": { + "description": "Line items of a recurrence bill.", + "items": { + "properties": { + "account_id": { + "description": "ID of the account associated with the line item.", + "example": "460000000000403", + "type": "string", + }, + "acquisition_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "purchase " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "customer_id": {"description": "ID of the Customer", "type": "string"}, + "description": { + "description": "Description of the line item.", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "is_billable": { + "description": "Check if entity is Billable", + "example": False, + "type": "boolean", + }, + "item_custom_fields": { + "items": { + "properties": { + "custom_field_id": {"format": "int64", "type": "integer"}, + "index": { + "description": "Index of the custom field", + "type": "integer", + }, + "label": { + "description": "Label of the Custom Field", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "ID of the Item", + "example": "460000000054135", + "type": "string", + }, + "item_order": {"example": 1, "type": "integer"}, + "line_item_id": { + "description": "ID of the Line Item", + "example": "460000000067009", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "name": {"type": "string"}, + "product_type": { + "description": "Type " + "of " + "the " + "bill. " + "This " + "denotes " + "whether " + "the " + "bill " + "line " + "item " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "purchase. " + "This " + "only " + "need " + "to " + "be " + "specified " + "in " + "case " + "purchase " + "order " + "is " + "not " + "enabled. " + "Allowed " + "Values: " + " " + "digital_service, " + "goods " + "and " + "service.", + "type": "string", + "x-node_available_in": ["eu", "uk"], + "x-node_unavailable_in": [], + }, + "project_id": {"description": "ID of the Project", "type": "string"}, + "quantity": { + "description": "Quantity of the line item.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Rate of the line item.", + "example": 10, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "Reverse charge tax ID", + "example": 460000000038056, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "(Optional) " + "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "purchase " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "serial_numbers": {"items": {"type": "string"}, "type": "array"}, + "tags": { + "items": { + "properties": { + "tag_id": { + "description": "ID of the Tag", + "example": "460000000054178", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "Id of the Tag Option", + "example": "460000000054180", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the Tax Exemption Applied", + "type": "string", + "x-node_available_in": ["in", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group applied to the line item.", + "example": "460000000027005", + "type": "string", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "TDS ID of the tax group applied to the line item", + "example": "460000000027001", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit of the Item", + "example": "kgs", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Notes for the Bill", + "example": "Thanks for your business.", + "type": "string", + }, + "payment_terms": { + "description": "Number Referring to Payment Terms", + "example": 0, + "type": "integer", + }, + "payment_terms_label": { + "description": "Label of the Payment Terms", + "example": "Due on Receipt", + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Enter ID of the price book.", + "example": 460000000038090, + "type": "string", + }, + "pricebook_name": {"description": "Name of the price book", "type": "string"}, + "recurrence_frequency": { + "description": "Description for recurrence_frequency", + "example": "", + "type": "string", + }, + "recurrence_name": { + "description": "Name of the Recurring Bill. Max-length [100]", + "example": "Monthly Rental", + "type": "string", + }, + "recurring_bill_id": {"example": 982000000567240, "type": "string"}, + "repeat_every": { + "description": "Description for repeat_every", + "example": "", + "type": "string", + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "start_date": { + "description": "Start date of the recurring bill. Bills " + "will not be generated for dates prior " + "to the current date. Format " + "[yyyy-mm-dd].", + "example": "2013-11-18", + "type": "string", + }, + "status": { + "description": "Status of the Recurring Bill", + "example": "active", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the bill. Choose " + "whether the vendor falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "terms": { + "description": "Terms and Conditions for the Bill", + "example": "Terms and conditions apply.", + "type": "string", + }, + "vat_reg_no": { + "description": "For UK Edition: VAT Registration " + "number of a contact with length should " + "be between 2 and 12 characters.
" + "For Avalara: If you are doing " + "sales in the European Union (EU) then " + "provide VAT Registration Number of your " + "customers here. This is used to " + "calculate VAT for B2B sales, from " + "Avalara.", + "type": "string", + "x-node_available_in": ["uk", "Avalara Integration"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "bill. VAT treatment denotes the " + "location of the vendor, if the " + "vendor resides in UK then the VAT " + "treatment is uk. If the " + "vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_id": { + "description": "ID of the vendor the bill has to be created.", + "example": "460000000038029", + "type": "string", + }, + }, + "required": [ + "vendor_id", + "recurrence_name", + "start_date", + "repeat_every", + "recurrence_frequency", + ], + "type": "object", + }, + "CREATERECURRINGEXPENSE_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": {"example": 982000000561057, "type": "string"}, + "acquisition_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is an EU - " + "goods expense and acquisition " + "VAT needs to be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Recurring Expense amount.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "currency_id": {"example": 982000000567001, "type": "string"}, + "custom_fields": { + "description": "Custom fields for a recurring-expense.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Search expenses by customer id.", + "example": 982000000567001, + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "end_date": { + "description": "Date on which recurring expense has to " + "expire. Can be left as empty to run " + "forever. Format [yyyy-mm-dd].", + "example": " ", + "type": "string", + }, + "exchange_rate": {"example": 1, "format": "double", "type": "number"}, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_billable": {"example": True, "type": "boolean"}, + "is_inclusive_tax": {"example": False, "type": "boolean"}, + "line_items": { + "items": { + "properties": { + "account_id": {"example": 982000000561057, "type": "string"}, + "acquisition_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "expense " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Recurring Expense amount.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "description": { + "description": "Search " + "recurring " + "expenses " + "by " + "description. " + "Max-length " + "[100]", + "example": " ", + "type": "string", + }, + "item_order": {"example": 1, "type": "string"}, + "line_item_id": {"example": 10763000000140068, "type": "string"}, + "product_type": { + "description": "Type " + "of " + "the " + "expense. " + "This " + "denotes " + "whether " + "the " + "expense " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "or " + "capital " + "asset " + "purchase. " + "Allowed " + "Values:
" + "For " + "UK " + "edition:digital_service, " + "goods " + "and " + "service.
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_tax_id": { + "description": "Enter " + "reverse " + "charge " + "tax " + "IDFor " + "SouthAfrica " + "edition:(Required " + "if " + "customer " + "tax " + "treatment " + "is " + "vat_registered)
Used " + "to " + "specify " + "whether " + "the " + "transaction " + "is " + "applicable " + "for " + "Domestic " + "Reverse " + "Charge " + "(DRC) " + "or " + "not.", + "example": 982000000567254, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "expense " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["in", "uk"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Enter the code for tax exemption", + "type": "string", + "x-node_available_in": ["in", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Enter ID of the tax exemption", + "example": 982000000567267, + "type": "string", + "x-node_available_in": ["in", "mx"], + "x-node_unavailable_in": [], + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "product_type": { + "description": "Type of the expense. This denotes " + "whether the expense is to be treated " + "as a goods or service or capital " + "asset purchase. Allowed Values:
" + "For UK " + "edition:digital_service, " + "goods and " + "service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "project_id": {"example": " ", "type": "string"}, + "recurrence_frequency": {"example": "months", "type": "string"}, + "recurrence_name": { + "description": "Name of the Recurring Expense. Max-length [100]", + "example": "Monthly Rental", + "type": "string", + }, + "repeat_every": {"example": 1, "type": "string"}, + "reverse_charge_tax_id": { + "description": "Enter reverse charge tax " + "IDFor SouthAfrica " + "edition:(Required if " + "customer tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is applicable " + "for Domestic Reverse Charge " + "(DRC) or not.", + "example": 982000000567254, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is a " + "non UK - service expense and " + "reverse charge VAT needs to " + "be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["in", "uk"], + "x-node_unavailable_in": [], + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "start_date": { + "description": "Start date of the recurring expense. " + "Expenses will not be generated for " + "dates prior to the current date. Format " + "[yyyy-mm-dd].", + "example": "2016-11-19T00:00:00.000Z", + "type": "string", + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + "tax_treatment": { + "description": "VAT treatment for the recurring " + "expense.Choose whether the contact " + "falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment for the expense. VAT " + "treatment denotes the location of " + "the vendor, if the vendor resides in " + "UK then the VAT treatment is " + "uk. If the vendor is in " + "an EU country & VAT registered, you " + "are resides in Northen Ireland and " + "purchasing Goods then his VAT " + "treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "eu_vat_not_registered", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": [ + "account_id", + "recurrence_name", + "start_date", + "recurrence_frequency", + "repeat_every", + "amount", + ], + "type": "object", + }, + "UPDATERECURRINGEXPENSE_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": {"example": 982000000561057, "type": "string"}, + "acquisition_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is an EU - " + "goods expense and acquisition " + "VAT needs to be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Recurring Expense amount.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "currency_id": {"example": 982000000567001, "type": "string"}, + "custom_fields": { + "description": "Custom fields for a recurring-expense.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Search expenses by customer id.", + "example": 982000000567001, + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "end_date": { + "description": "Date on which recurring expense has to " + "expire. Can be left as empty to run " + "forever. Format [yyyy-mm-dd].", + "example": " ", + "type": "string", + }, + "exchange_rate": {"example": 1, "format": "double", "type": "number"}, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_billable": {"example": True, "type": "boolean"}, + "is_inclusive_tax": {"example": False, "type": "boolean"}, + "line_items": { + "items": { + "properties": { + "account_id": {"example": 982000000561057, "type": "string"}, + "acquisition_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "expense " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Recurring Expense amount.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "description": { + "description": "Search " + "recurring " + "expenses " + "by " + "description. " + "Max-length " + "[100]", + "example": " ", + "type": "string", + }, + "item_order": {"example": 1, "type": "string"}, + "line_item_id": {"example": 10763000000140068, "type": "string"}, + "product_type": { + "description": "Type " + "of " + "the " + "expense. " + "This " + "denotes " + "whether " + "the " + "expense " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "or " + "capital " + "asset " + "purchase. " + "Allowed " + "Values:
" + "For " + "UK " + "edition:digital_service, " + "goods " + "and " + "service.
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_tax_id": { + "description": "Enter " + "reverse " + "charge " + "tax " + "IDFor " + "SouthAfrica " + "edition:(Required " + "if " + "customer " + "tax " + "treatment " + "is " + "vat_registered)
Used " + "to " + "specify " + "whether " + "the " + "transaction " + "is " + "applicable " + "for " + "Domestic " + "Reverse " + "Charge " + "(DRC) " + "or " + "not.", + "example": 982000000567254, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "expense " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["in", "uk"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Enter the code for tax exemption", + "type": "string", + "x-node_available_in": ["in", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Enter ID of the tax exemption", + "example": 982000000567267, + "type": "string", + "x-node_available_in": ["in", "mx"], + "x-node_unavailable_in": [], + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "product_type": { + "description": "Type of the expense. This denotes " + "whether the expense is to be treated " + "as a goods or service or capital " + "asset purchase. Allowed Values:
" + "For UK " + "edition:digital_service, " + "goods and " + "service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "project_id": {"example": " ", "type": "string"}, + "recurrence_frequency": {"example": "months", "type": "string"}, + "recurrence_name": { + "description": "Name of the Recurring Expense. Max-length [100]", + "example": "Monthly Rental", + "type": "string", + }, + "repeat_every": {"example": 1, "type": "string"}, + "reverse_charge_tax_id": { + "description": "Enter reverse charge tax " + "IDFor SouthAfrica " + "edition:(Required if " + "customer tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is applicable " + "for Domestic Reverse Charge " + "(DRC) or not.", + "example": 982000000567254, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is a " + "non UK - service expense and " + "reverse charge VAT needs to " + "be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["in", "uk"], + "x-node_unavailable_in": [], + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "start_date": { + "description": "Start date of the recurring expense. " + "Expenses will not be generated for " + "dates prior to the current date. Format " + "[yyyy-mm-dd].", + "example": "2016-11-19T00:00:00.000Z", + "type": "string", + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + "tax_treatment": { + "description": "VAT treatment for the recurring " + "expense.Choose whether the contact " + "falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment for the expense. VAT " + "treatment denotes the location of " + "the vendor, if the vendor resides in " + "UK then the VAT treatment is " + "uk. If the vendor is in " + "an EU country & VAT registered, you " + "are resides in Northen Ireland and " + "purchasing Goods then his VAT " + "treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "eu_vat_not_registered", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": [ + "account_id", + "recurrence_name", + "start_date", + "recurrence_frequency", + "repeat_every", + "amount", + ], + "type": "object", + }, + "MODIFYRECURRINGEXPENSE_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": {"example": 982000000561057, "type": "string"}, + "acquisition_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is an EU - " + "goods expense and acquisition " + "VAT needs to be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Recurring Expense amount.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "currency_id": {"example": 982000000567001, "type": "string"}, + "custom_fields": { + "description": "Custom fields for a recurring-expense.", + "items": { + "properties": { + "customfield_id": { + "example": "46000000012845", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Search expenses by customer id.", + "example": 982000000567001, + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "end_date": { + "description": "Date on which recurring expense has to " + "expire. Can be left as empty to run " + "forever. Format [yyyy-mm-dd].", + "example": " ", + "type": "string", + }, + "exchange_rate": {"example": 1, "format": "double", "type": "number"}, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_billable": {"example": True, "type": "boolean"}, + "is_inclusive_tax": {"example": False, "type": "boolean"}, + "line_items": { + "items": { + "properties": { + "account_id": {"example": 982000000561057, "type": "string"}, + "acquisition_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "an " + "EU " + "- " + "goods " + "expense " + "and " + "acquisition " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "amount": { + "description": "Recurring Expense amount.", + "example": 112.5, + "format": "double", + "type": "number", + }, + "description": { + "description": "Search " + "recurring " + "expenses " + "by " + "description. " + "Max-length " + "[100]", + "example": " ", + "type": "string", + }, + "item_order": {"example": 1, "type": "string"}, + "line_item_id": {"example": 10763000000140068, "type": "string"}, + "product_type": { + "description": "Type " + "of " + "the " + "expense. " + "This " + "denotes " + "whether " + "the " + "expense " + "is " + "to " + "be " + "treated " + "as " + "a " + "goods " + "or " + "service " + "or " + "capital " + "asset " + "purchase. " + "Allowed " + "Values:
" + "For " + "UK " + "edition:digital_service, " + "goods " + "and " + "service.
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_tax_id": { + "description": "Enter " + "reverse " + "charge " + "tax " + "IDFor " + "SouthAfrica " + "edition:(Required " + "if " + "customer " + "tax " + "treatment " + "is " + "vat_registered)
Used " + "to " + "specify " + "whether " + "the " + "transaction " + "is " + "applicable " + "for " + "Domestic " + "Reverse " + "Charge " + "(DRC) " + "or " + "not.", + "example": 982000000567254, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "This " + "is " + "the " + "ID " + "of " + "the " + "tax " + "applied " + "in " + "case " + "this " + "is " + "a " + "non " + "UK " + "- " + "service " + "expense " + "and " + "reverse " + "charge " + "VAT " + "needs " + "to " + "be " + "reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["in", "uk"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Enter the code for tax exemption", + "type": "string", + "x-node_available_in": ["in", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Enter ID of the tax exemption", + "example": 982000000567267, + "type": "string", + "x-node_available_in": ["in", "mx"], + "x-node_unavailable_in": [], + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "product_type": { + "description": "Type of the expense. This denotes " + "whether the expense is to be treated " + "as a goods or service or capital " + "asset purchase. Allowed Values:
" + "For UK " + "edition:digital_service, " + "goods and " + "service.
For " + "SouthAfrica Edition: " + "service, " + "goods, " + "capital_service and " + "capital_goods", + "example": "goods", + "type": "string", + "x-node_available_in": ["uk", "za"], + "x-node_unavailable_in": [], + }, + "project_id": {"example": " ", "type": "string"}, + "recurrence_frequency": {"example": "months", "type": "string"}, + "recurrence_name": { + "description": "Name of the Recurring Expense. Max-length [100]", + "example": "Monthly Rental", + "type": "string", + }, + "repeat_every": {"example": 1, "type": "string"}, + "reverse_charge_tax_id": { + "description": "Enter reverse charge tax " + "IDFor SouthAfrica " + "edition:(Required if " + "customer tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is applicable " + "for Domestic Reverse Charge " + "(DRC) or not.", + "example": 982000000567254, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "reverse_charge_vat_id": { + "description": "This is the ID of the tax " + "applied in case this is a " + "non UK - service expense and " + "reverse charge VAT needs to " + "be reported.", + "example": " ", + "type": "string", + "x-node_available_in": ["in", "uk"], + "x-node_unavailable_in": [], + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "AP", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "start_date": { + "description": "Start date of the recurring expense. " + "Expenses will not be generated for " + "dates prior to the current date. Format " + "[yyyy-mm-dd].", + "example": "2016-11-19T00:00:00.000Z", + "type": "string", + }, + "tax_id": {"example": 982000000566007, "type": "string"}, + "tax_treatment": { + "description": "VAT treatment for the recurring " + "expense.Choose whether the contact " + "falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment for the expense. VAT " + "treatment denotes the location of " + "the vendor, if the vendor resides in " + "UK then the VAT treatment is " + "uk. If the vendor is in " + "an EU country & VAT registered, you " + "are resides in Northen Ireland and " + "purchasing Goods then his VAT " + "treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "eu_vat_not_registered", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": [ + "account_id", + "recurrence_name", + "start_date", + "recurrence_frequency", + "repeat_every", + "amount", + ], + "type": "object", + }, + "CREATERECURRINGINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Adjustments made to the invoice.", + "example": 0, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Customize the adjustment description. E.g: Rounding off.", + "example": "Rounding off", + "type": "string", + }, + "allow_partial_payments": { + "description": "Choose false " + "for PPU-Single Payments and " + "true for " + "PPD-Installment Payments", + "example": True, + "type": "boolean", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_tax_code": { + "description": "A tax code is a unique label used to group items together.", + "example": " ", + "type": "string", + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "billing_address": { + "properties": { + "address": { + "description": "Billing address for the invoice", + "example": "4900 Hopyard Rd, Suite 310", + "type": "string", + }, + "city": { + "description": "City of the customer's billing address.", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country of the customer's billing address.", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Customer's fax number.", + "example": "+1-925-924-9600", + "type": "string", + }, + "state": { + "description": "State of the customer's billing address.", + "example": "CA", + "type": "string", + }, + "street2": {"example": "McMillan Avenue", "type": "string"}, + "zip": { + "description": "Zip code of the customer's billing address.", + "example": "94588", + "type": "string", + }, + }, + "type": "object", + }, + "cfdi_usage": { + "description": "Choose CFDI Usage.
Allowed values: " + "acquisition_of_merchandise, " + "return_discount_bonus, " + "general_expense, " + "buildings, " + "furniture_office_equipment, " + "transport_equipment, " + "computer_equipmentdye_molds_tools, " + "telephone_communication, " + "satellite_communication, " + "other_machinery_equipment, " + "hospital_expense, " + "medical_expense_disability, " + "funeral_expense, " + "donation, " + "interest_mortage_loans, " + "contribution_sar, " + "medical_expense_insurance_pormium, " + "school_transportation_expense, " + "deposit_saving_account, " + "payment_educational_service, " + "no_tax_effect, " + "payment, " + "payroll.", + "example": "acquisition_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "currency_id": { + "description": "The currenct id of the currency", + "example": "982000000000190", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "data_type": { + "description": "Data type of the custom field.", + "example": "text", + "type": "string", + }, + "label": { + "description": "Label of the custom field.", + "example": "label", + "type": "string", + }, + "value": { + "description": "Value of the custom field.", + "example": "129890", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Customer ID of the customer for whom " + "the recurring invoice is raised.", + "example": "903000000000099", + "type": "string", + }, + "description": { + "description": "A small description about the item. Max-length [2000]", + "example": "prorated amount for items", + "type": "string", + }, + "discount": { + "description": "Discount applied to the invoice. It can " + "be either in % or in amount. E.g: 12.5% " + "or 190.", + "example": "30%", + "type": "string", + }, + "discount_type": { + "description": "How the discount is specified. " + "Allowed values: " + "entity_level and " + "item_level.", + "example": "entity level", + "type": "string", + }, + "email": { + "description": "Email address of the customer.", + "example": "benjamin.george@bowmanfurniture.com", + "type": "string", + }, + "end_date": { + "description": "The date on which the recurring invoice expires.", + "example": "2017-06-12", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for the currency associated with the customer.", + "example": "5.5", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Used to specify how the " + "discount has to applied. " + "Either before or after the " + "calculation of tax.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique string generated for the item for " + "which invoice is to be sent.", + "example": "90300000081501", + "type": "string", + }, + "line_items": { + "description": "Line items of an invoice.", + "items": { + "properties": { + "header_name": { + "description": "Name of the item header", + "example": "Electronic devices", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_total": { + "description": "Total " + "rate " + "raised " + "by " + "this " + "item. " + "This " + "would " + "be " + "the " + "multiplicative " + "product " + "of " + "item " + "price " + "and " + "quantity.", + "example": 100, + "format": "double", + "type": "number", + }, + "line_item_id": { + "description": "The line item id", + "example": "982000000567021", + "type": "string", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "The name of the line item. max-length [100]", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Enter " + "goods " + "or " + "services " + ".
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Quantity of the item included.", + "example": 1, + "format": "int32", + "type": "integer", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tags": { + "description": "Filter all your reports based on the tag", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 982000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 982000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_id": { + "description": "ID " + "of " + "the " + "tax " + "or " + "tax " + "group " + "associated " + "to " + "the " + "recurring " + "invoice.", + "example": "903000000000356", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "ID " + "of " + "the " + "TDS " + "tax " + "or " + "TDS " + "tax " + "group " + "associated " + "to " + "the " + "recurring " + "invoice.", + "example": "903000000000357", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "box", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "The name of the line item. max-length [100]", + "example": "Hard Drive", + "type": "string", + }, + "payment_options": { + "properties": { + "payment_gateways": { + "items": { + "properties": { + "additional_field1": { + "description": "Paypal " + "payment " + "method. " + "Allowed " + "Values: " + "standard " + "and " + "adaptive", + "example": "standard", + "type": "string", + }, + "configured": { + "description": "Boolean " + "check " + "to " + "see " + "if " + "a " + "payment " + "gateway " + "ahs " + "been " + "configured", + "example": True, + "type": "boolean", + }, + "gateway_name": { + "description": "Name " + "of " + "the " + "payment " + "gateway " + "associated " + "with " + "the " + "invoice. " + "E.g. " + "paypal, " + "stripe.Allowed " + "Values: " + "paypal, " + "authorize_net, " + "payflow_pro, " + "stripe, " + "2checkout " + "and " + "braintree", + "example": "paypal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "payment_terms": { + "description": "Payment terms in days. E.g: " + "15,30,60. Invoice due date will be " + "calculated based on this.", + "example": 0, + "type": "integer", + }, + "payment_terms_label": { + "description": "Used to overridethe default " + "payment terms label. Default " + 'value for 15 days is "Next 15 ' + 'days".', + "example": "Next 15 days", + "type": "string", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "quantity": { + "description": "Quantity of the item included.", + "example": 1, + "format": "int32", + "type": "integer", + }, + "rate": { + "description": "Rate of the line item.", + "example": 0, + "format": "double", + "type": "number", + }, + "recurrence_frequency": { + "description": "The frequency of time " + "interval at which the invoice " + "is to be generated.", + "enum": ["weeks"], + "example": "weeks", + "type": "string", + }, + "recurrence_name": { + "description": "Unique name for the recurring " + "profile given by the user. " + "Max-length [100]", + "example": "MonthlyInvoice", + "type": "string", + }, + "reference_number": { + "description": "The Order number of the Recurring Invoice.", + "example": "12314", + "type": "string", + }, + "repeat_every": { + "description": "The period between every recurrency frequency.", + "example": 2, + "type": "integer", + }, + "salesperson_name": { + "description": "Name of the sales person", + "example": " ", + "type": "string", + "x-node_available_in": ["us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "shipping_address": { + "properties": { + "address": { + "description": "Billing address for the invoice", + "example": "4900 Hopyard Rd, Suite 310", + "type": "string", + }, + "city": { + "description": "City of the customer's billing address.", + "example": "Pleasanton", + "type": "string", + }, + "country": { + "description": "Country of the customer's billing address.", + "example": "U.S.A", + "type": "string", + }, + "fax": { + "description": "Customer's fax number.", + "example": "+1-925-924-9600", + "type": "string", + }, + "state": { + "description": "State of the customer's billing address.", + "example": "CA", + "type": "string", + }, + "zip": { + "description": "Zip code of the customer's billing address.", + "example": "94588", + "type": "string", + }, + }, + "type": "object", + }, + "shipping_charge": { + "description": "Shipping charges applied to the invoice.", + "example": 0, + "format": "double", + "type": "number", + }, + "start_date": { + "description": "The date on which the recurring invoice starts.", + "example": "2016-06-12", + "type": "string", + }, + "tax_authority_id": { + "description": "Unique ID of the tax authority. " + "Tax authority depends on the " + "location of the customer. For " + "example, if the customer is " + "located in NY, then the tax " + "authority is NY tax authority.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group associated to the recurring invoice.", + "example": "903000000000356", + }, + "tax_treatment": { + "description": "Choose whether the vat treatment for " + "the contact falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique ID of the recurring invoice template.", + "example": "90300000001336", + "type": "string", + }, + "unit": { + "description": "Unit of the line item. E.g: kgs, Nos.", + "example": "kgs", + "type": "string", + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "invoices. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "overseas", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["recurrence_name", "customer_id", "recurrence_frequency"], + "type": "object", + }, + "UPDATERECURRINGINVOICECUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "allow_partial_payments": { + "description": "Choose false " + "for PPU-Single Payments and " + "true for " + "PPD-Installment Payments", + "example": True, + "type": "boolean", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "cfdi_usage": { + "description": "Choose CFDI Usage.
Allowed values: " + "acquisition_of_merchandise, " + "return_discount_bonus, " + "general_expense, " + "buildings, " + "furniture_office_equipment, " + "transport_equipment, " + "computer_equipmentdye_molds_tools, " + "telephone_communication, " + "satellite_communication, " + "other_machinery_equipment, " + "hospital_expense, " + "medical_expense_disability, " + "funeral_expense, " + "donation, " + "interest_mortage_loans, " + "contribution_sar, " + "medical_expense_insurance_pormium, " + "school_transportation_expense, " + "deposit_saving_account, " + "payment_educational_service, " + "no_tax_effect, " + "payment, " + "payroll.", + "example": "acquisition_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "currency_id": { + "description": "The currenct id of the currency", + "example": "982000000000190", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "data_type": { + "description": "Data type of the custom field.", + "example": "text", + "type": "string", + }, + "label": { + "description": "Label of the custom field.", + "example": "label", + "type": "string", + }, + "value": { + "description": "Value of the custom field.", + "example": "129890", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Customer ID of the customer for whom " + "the recurring invoice is raised.", + "example": "903000000000099", + "type": "string", + }, + "email": { + "description": "Email address of the customer.", + "example": "benjamin.george@bowmanfurniture.com", + "type": "string", + }, + "end_date": { + "description": "The date on which the recurring invoice expires.", + "example": "2017-06-12", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "line_items": { + "description": "Line items of an invoice.", + "items": { + "properties": { + "avatax_tax_code": { + "description": "A " + "tax " + "code " + "is " + "a " + "unique " + "label " + "used " + "to " + "group " + "items " + "together.", + "example": " ", + "type": "string", + }, + "avatax_use_code": { + "description": "Used " + "to " + "group " + "like " + "customers " + "for " + "exemption " + "purposes. " + "It " + "is " + "a " + "custom " + "value " + "that " + "links " + "customers " + "to " + "a " + "tax " + "rule. " + "Select " + "from " + "Avalara " + "[standard " + "codes][1] " + "or " + "enter " + "a " + "custom " + "code. " + "Max-length " + "[25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "A small description about the item. Max-length [2000]", + "example": "prorated amount for items", + "type": "string", + }, + "discount": { + "description": "Discount " + "applied " + "to " + "the " + "invoice. " + "It " + "can " + "be " + "either " + "in " + "% " + "or " + "in " + "amount. " + "E.g: " + "12.5% " + "or " + "190.", + "example": "30%", + "type": "string", + }, + "header_id": { + "description": "ID of the item header", + "example": 982000000000670, + "type": "string", + }, + "header_name": { + "description": "Name of the item header", + "example": "Electronic devices", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique " + "string " + "generated " + "for " + "the " + "item " + "for " + "which " + "invoice " + "is " + "to " + "be " + "sent.", + "example": "90300000081501", + "type": "string", + }, + "item_total": { + "description": "Total " + "rate " + "raised " + "by " + "this " + "item. " + "This " + "would " + "be " + "the " + "multiplicative " + "product " + "of " + "item " + "price " + "and " + "quantity.", + "example": 100, + "format": "double", + "type": "number", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "The name of the line item. max-length [100]", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Enter " + "goods " + "or " + "services " + ".
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Quantity of the item included.", + "example": 1, + "format": "int32", + "type": "integer", + }, + "rate": { + "description": "Rate of the line item.", + "example": 0, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tags": { + "description": "Filter all your reports based on the tag", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 982000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 982000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID " + "of " + "the " + "tax " + "or " + "tax " + "group " + "associated " + "to " + "the " + "recurring " + "invoice.", + "example": "903000000000356", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "ID " + "of " + "the " + "TDS " + "tax " + "or " + "TDS " + "tax " + "group " + "associated " + "to " + "the " + "recurring " + "invoice.", + "example": "903000000000357", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "box", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "payment_options": { + "properties": { + "payment_gateways": { + "items": { + "properties": { + "additional_field1": { + "description": "Paypal " + "payment " + "method. " + "Allowed " + "Values: " + "standard " + "and " + "adaptive", + "example": "standard", + "type": "string", + }, + "configured": { + "description": "Boolean " + "check " + "to " + "see " + "if " + "a " + "payment " + "gateway " + "ahs " + "been " + "configured", + "example": True, + "type": "boolean", + }, + "gateway_name": { + "description": "Name " + "of " + "the " + "payment " + "gateway " + "associated " + "with " + "the " + "invoice. " + "E.g. " + "paypal, " + "stripe.Allowed " + "Values: " + "paypal, " + "authorize_net, " + "payflow_pro, " + "stripe, " + "2checkout " + "and " + "braintree", + "example": "paypal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "recurrence_frequency": { + "description": "The frequency of time " + "interval at which the invoice " + "is to be generated.", + "enum": ["weeks"], + "example": "weeks", + "type": "string", + }, + "recurrence_name": { + "description": "Unique name for the recurring " + "profile given by the user. " + "Max-length [100]", + "example": "MonthlyInvoice", + "type": "string", + }, + "reference_number": { + "description": "The Order number of the Recurring Invoice.", + "example": "12314", + "type": "string", + }, + "repeat_every": { + "description": "The period between every recurrency frequency.", + "example": 2, + "type": "integer", + }, + "start_date": { + "description": "The date on which the recurring invoice starts.", + "example": "2016-06-12", + "type": "string", + }, + "tax_authority_id": { + "description": "Unique ID of the tax authority. " + "Tax authority depends on the " + "location of the customer. For " + "example, if the customer is " + "located in NY, then the tax " + "authority is NY tax authority.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group associated to the recurring invoice.", + "example": "903000000000356", + }, + "tax_treatment": { + "description": "Choose whether the vat treatment for " + "the contact falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "invoices. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "overseas", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["recurrence_name", "customer_id", "recurrence_frequency"], + "type": "object", + }, + "UPDATERECURRINGINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "allow_partial_payments": { + "description": "Choose false " + "for PPU-Single Payments and " + "true for " + "PPD-Installment Payments", + "example": True, + "type": "boolean", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule. Select from Avalara " + "[standard codes][1] or enter a " + "custom code. Max-length [25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "cfdi_usage": { + "description": "Choose CFDI Usage.
Allowed values: " + "acquisition_of_merchandise, " + "return_discount_bonus, " + "general_expense, " + "buildings, " + "furniture_office_equipment, " + "transport_equipment, " + "computer_equipmentdye_molds_tools, " + "telephone_communication, " + "satellite_communication, " + "other_machinery_equipment, " + "hospital_expense, " + "medical_expense_disability, " + "funeral_expense, " + "donation, " + "interest_mortage_loans, " + "contribution_sar, " + "medical_expense_insurance_pormium, " + "school_transportation_expense, " + "deposit_saving_account, " + "payment_educational_service, " + "no_tax_effect, " + "payment, " + "payroll.", + "example": "acquisition_of_merchandise", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "currency_id": { + "description": "The currenct id of the currency", + "example": "982000000000190", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "data_type": { + "description": "Data type of the custom field.", + "example": "text", + "type": "string", + }, + "label": { + "description": "Label of the custom field.", + "example": "label", + "type": "string", + }, + "value": { + "description": "Value of the custom field.", + "example": "129890", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Customer ID of the customer for whom " + "the recurring invoice is raised.", + "example": "903000000000099", + "type": "string", + }, + "email": { + "description": "Email address of the customer.", + "example": "benjamin.george@bowmanfurniture.com", + "type": "string", + }, + "end_date": { + "description": "The date on which the recurring invoice expires.", + "example": "2017-06-12", + "type": "string", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "line_items": { + "description": "Line items of an invoice.", + "items": { + "properties": { + "avatax_tax_code": { + "description": "A " + "tax " + "code " + "is " + "a " + "unique " + "label " + "used " + "to " + "group " + "items " + "together.", + "example": " ", + "type": "string", + }, + "avatax_use_code": { + "description": "Used " + "to " + "group " + "like " + "customers " + "for " + "exemption " + "purposes. " + "It " + "is " + "a " + "custom " + "value " + "that " + "links " + "customers " + "to " + "a " + "tax " + "rule. " + "Select " + "from " + "Avalara " + "[standard " + "codes][1] " + "or " + "enter " + "a " + "custom " + "code. " + "Max-length " + "[25]", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "A small description about the item. Max-length [2000]", + "example": "prorated amount for items", + "type": "string", + }, + "discount": { + "description": "Discount " + "applied " + "to " + "the " + "invoice. " + "It " + "can " + "be " + "either " + "in " + "% " + "or " + "in " + "amount. " + "E.g: " + "12.5% " + "or " + "190.", + "example": "30%", + "type": "string", + }, + "header_id": { + "description": "ID of the item header", + "example": 982000000000670, + "type": "string", + }, + "header_name": { + "description": "Name of the item header", + "example": "Electronic devices", + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_id": { + "description": "Unique " + "string " + "generated " + "for " + "the " + "item " + "for " + "which " + "invoice " + "is " + "to " + "be " + "sent.", + "example": "90300000081501", + "type": "string", + }, + "item_total": { + "description": "Total " + "rate " + "raised " + "by " + "this " + "item. " + "This " + "would " + "be " + "the " + "multiplicative " + "product " + "of " + "item " + "price " + "and " + "quantity.", + "example": 100, + "format": "double", + "type": "number", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "The name of the line item. max-length [100]", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Enter " + "goods " + "or " + "services " + ".
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Quantity of the item included.", + "example": 1, + "format": "int32", + "type": "integer", + }, + "rate": { + "description": "Rate of the line item.", + "example": 0, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tags": { + "description": "Filter all your reports based on the tag", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 982000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 982000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID " + "of " + "the " + "tax " + "or " + "tax " + "group " + "associated " + "to " + "the " + "recurring " + "invoice.", + "example": "903000000000356", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "ID " + "of " + "the " + "TDS " + "tax " + "or " + "TDS " + "tax " + "group " + "associated " + "to " + "the " + "recurring " + "invoice.", + "example": "903000000000357", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "box", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "payment_options": { + "properties": { + "payment_gateways": { + "items": { + "properties": { + "additional_field1": { + "description": "Paypal " + "payment " + "method. " + "Allowed " + "Values: " + "standard " + "and " + "adaptive", + "example": "standard", + "type": "string", + }, + "configured": { + "description": "Boolean " + "check " + "to " + "see " + "if " + "a " + "payment " + "gateway " + "ahs " + "been " + "configured", + "example": True, + "type": "boolean", + }, + "gateway_name": { + "description": "Name " + "of " + "the " + "payment " + "gateway " + "associated " + "with " + "the " + "invoice. " + "E.g. " + "paypal, " + "stripe.Allowed " + "Values: " + "paypal, " + "authorize_net, " + "payflow_pro, " + "stripe, " + "2checkout " + "and " + "braintree", + "example": "paypal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "recurrence_frequency": { + "description": "The frequency of time " + "interval at which the invoice " + "is to be generated.", + "enum": ["weeks"], + "example": "weeks", + "type": "string", + }, + "recurrence_name": { + "description": "Unique name for the recurring " + "profile given by the user. " + "Max-length [100]", + "example": "MonthlyInvoice", + "type": "string", + }, + "reference_number": { + "description": "The Order number of the Recurring Invoice.", + "example": "12314", + "type": "string", + }, + "repeat_every": { + "description": "The period between every recurrency frequency.", + "example": 2, + "type": "integer", + }, + "start_date": { + "description": "The date on which the recurring invoice starts.", + "example": "2016-06-12", + "type": "string", + }, + "tax_authority_id": { + "description": "Unique ID of the tax authority. " + "Tax authority depends on the " + "location of the customer. For " + "example, if the customer is " + "located in NY, then the tax " + "authority is NY tax authority.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "Unique ID of the tax exemption.", + "example": "903000006345", + "type": "string", + "x-node_available_in": ["in", "us", "au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group associated to the recurring invoice.", + "example": "903000000000356", + }, + "tax_treatment": { + "description": "Choose whether the vat treatment for " + "the contact falls under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "invoices. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and selling Goods " + "then his VAT treatment is " + "eu_vat_registered, if " + "he resides outside of the UK then " + "his VAT treatment is " + "overseas (For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "example": "overseas", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + }, + "required": ["recurrence_name", "customer_id", "recurrence_frequency"], + "type": "object", + }, + "STOPRECURRINGINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "recurring_invoice_id": { + "description": "Unique ID of the recurring invoice generated by the server.", + "example": "90300000072369", + "type": "string", + } + }, + "type": "object", + }, + "RESUMERECURRINGINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "recurring_invoice_id": { + "description": "Unique ID of the recurring invoice generated by the server.", + "example": "90300000072369", + "type": "string", + } + }, + "type": "object", + }, + "UPDATERECURRINGINVOICETEMPLATE_REQUEST_BODY_SCHEMA": { + "properties": { + "recurring_invoice_id": { + "description": "Unique ID of the recurring invoice generated by the server.", + "example": "90300000072369", + "type": "string", + }, + "template_id": { + "description": "Unique ID of the recurring invoice template.", + "example": "90300043563547", + "type": "string", + }, + }, + "type": "object", + }, + "CREATERETAINERINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "custom_fields": { + "description": "Custom fields for a reatiner invoice.", + "items": { + "properties": { + "index": { + "description": "The index of the custom field", + "example": 1, + "type": "integer", + }, + "label": { + "description": "The label of the custom field.", + "example": "Delivery Date", + "type": "string", + }, + "show_on_pdf": { + "description": "Boolean " + "value " + "to " + "check " + "if " + "the " + "custom " + "field " + "is " + "to " + "be " + "dispplayed " + "on " + "the " + "pdf.", + "example": False, + "type": "boolean", + }, + "value": {"example": "The value of the custom field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "ID of the customer the retainer invoice has to be created.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "The date of creation of the retainer invoice.", + "example": "2013-11-17", + "type": "string", + }, + "line_items": { + "description": "Line items of an invoice.", + "items": { + "properties": { + "description": { + "description": "The description of the line items. Max-length [2000]", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "item_order": { + "description": "The order of the line item_order", + "example": 1, + "type": "integer", + }, + "rate": { + "description": "Rate of the line item.", + "example": 120, + "format": "double", + "type": "number", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "The notes added below expressing gratitude " + "or for conveying some information.", + "example": "Looking forward for your business.", + "type": "string", + }, + "payment_options": { + "description": "Payment options for the retainer " + "invoice, online payment gateways " + "and bank accounts. Will be " + "displayed in the pdf.", + "properties": { + "payment_gateways": { + "description": "Online payment gateways through which payment can be made.", + "items": { + "properties": { + "additional_field1": { + "description": "Paypal " + "payment " + "method. " + "Allowed " + "Values: " + "standard " + "and " + "adaptive", + "example": "standard", + "type": "string", + }, + "configured": { + "description": "Boolean " + "check " + "to " + "see " + "if " + "a " + "payment " + "gateway " + "ahs " + "been " + "configured", + "example": True, + "type": "boolean", + }, + "gateway_name": { + "description": "Name " + "of " + "the " + "payment " + "gateway " + "associated " + "with " + "the " + "retainer " + "invoice. " + "E.g. " + "paypal, " + "stripe.Allowed " + "Values: " + "paypal, " + "authorize_net, " + "payflow_pro, " + "stripe, " + "2checkout " + "and " + "braintree", + "example": "paypal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "reference_number": { + "description": "The reference number of the retainer invoice. Max-length [100]", + "example": " ", + "type": "string", + }, + "template_id": { + "description": "ID of the pdf template associated with the retainer invoice.", + "example": 982000000000143, + "type": "string", + }, + "terms": { + "description": "The terms added below expressing gratitude " + "or for conveying some information.", + "example": "Terms & Conditions apply", + "type": "string", + }, + }, + "required": ["customer_id", "line_items"], + "type": "object", + }, + "MODIFYINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "custom_fields": { + "description": "Custom fields for a reatiner invoice.", + "items": { + "properties": { + "index": { + "description": "The index of the custom field", + "example": 1, + "type": "integer", + }, + "label": { + "description": "The label of the custom field.", + "example": "Delivery Date", + "type": "string", + }, + "show_on_pdf": { + "description": "Boolean " + "value " + "to " + "check " + "if " + "the " + "custom " + "field " + "is " + "to " + "be " + "dispplayed " + "on " + "the " + "pdf.", + "example": False, + "type": "boolean", + }, + "value": {"example": "The value of the custom field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "ID of the customer the retainer invoice has to be created.", + "example": 982000000567001, + "type": "string", + }, + "date": { + "description": "The date of creation of the retainer invoice.", + "example": "2013-11-17", + "type": "string", + }, + "line_items": { + "description": "Line items of a retainer invoice.", + "items": { + "properties": { + "description": { + "description": "The description of the line items. Max-length [2000]", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "item_order": { + "description": "The order of the line item_order", + "example": 1, + "type": "integer", + }, + "rate": { + "description": "Rate of the line item.", + "example": 120, + "format": "double", + "type": "number", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "The notes added below expressing gratitude " + "or for conveying some information.", + "example": "Looking forward for your business.", + "type": "string", + }, + "payment_options": { + "description": "Payment options for the retainer " + "invoice, online payment gateways " + "and bank accounts. Will be " + "displayed in the pdf.", + "properties": { + "payment_gateways": { + "description": "Online payment gateways through which payment can be made.", + "items": { + "properties": { + "additional_field1": { + "description": "Paypal " + "payment " + "method. " + "Allowed " + "Values: " + "standard " + "and " + "adaptive", + "example": "standard", + "type": "string", + }, + "configured": { + "description": "Boolean " + "check " + "to " + "see " + "if " + "a " + "payment " + "gateway " + "ahs " + "been " + "configured", + "example": True, + "type": "boolean", + }, + "gateway_name": { + "description": "Name " + "of " + "the " + "payment " + "gateway " + "associated " + "with " + "the " + "retainer " + "invoice. " + "E.g. " + "paypal, " + "stripe.Allowed " + "Values: " + "paypal, " + "authorize_net, " + "payflow_pro, " + "stripe, " + "2checkout " + "and " + "braintree", + "example": "paypal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "project_id": { + "description": "ID of the project", + "example": 982000000567154, + "type": "string", + }, + "reference_number": { + "description": "The reference number of the retainer invoice. Max-length [100]", + "example": " ", + "type": "string", + }, + "template_id": { + "description": "ID of the pdf template associated with the retainer invoice.", + "example": 982000000000143, + "type": "string", + }, + "terms": { + "description": "The terms added below expressing gratitude " + "or for conveying some information.", + "example": "Terms & Conditions apply", + "type": "string", + }, + }, + "required": ["customer_id", "line_items"], + "type": "object", + }, + "EMAILRETAINERINVOICETOCUSTOMER_REQUEST_BODY_SCHEMA": { + "properties": { + "body": { + "description": "The body of the mail", + "example": "Dear Customer,



Thanks for " + "your business.



The " + "retainer invoice RET-00001 is attached with this " + "email. You can choose the easy way out and pay online for this invoice. " + "

Here's an overview of the invoice for " + "your reference.



Invoice " + "Overview:

Invoice : " + "INV-00001

Date : 05 Aug " + "2013

Amount : $541.82 " + "



It was great working with you. " + "Looking forward to working with you " + "again.


\\nRegards
\\nZillium " + 'Inc
\\n",', + "type": "string", + }, + "cc_mail_ids": { + "description": "Array of email address of the recipients to be cced.", + "example": ["peterparker@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + "send_from_org_email_id": { + "description": "Boolean to trigger the email from the organization's email address", + "example": False, + "type": "boolean", + }, + "subject": { + "description": "The subject of the mail", + "example": "Retainer Invoice from Zillium Inc (Retainer Invoice#: RET-00001)", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email address of the recipients.", + "example": ["willsmith@bowmanfurniture.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids"], + "type": "object", + }, + "UPDATEBILLINGADDRESSRETAINERINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "address of the customer", + "example": "B-1104, 11F, \n" + "Horizon International Tower, \n" + "No. 6, ZhiChun Road, HaiDian District", + "type": "string", + }, + "city": {"description": "city of the customer", "example": "Beijing", "type": "string"}, + "country": {"description": "country of the customer", "type": "string"}, + "fax": { + "description": "fax of the customer", + "example": "+86-10-82637827", + "type": "string", + }, + "state": { + "description": "state of the customer", + "example": "Beijing", + "type": "string", + }, + "zip": {"description": "zip of the customer", "example": 1000881, "type": "string"}, + }, + "type": "object", + }, + "ATTACHFILETOINVOICE_REQUEST_BODY_SCHEMA": { + "properties": { + "attachment": { + "description": "The file to be attached. It has to be sent in multipart/formdata", + "format": "binary", + "type": "string", + }, + "can_send_in_mail": {"example": True, "type": "boolean"}, + }, + "type": "object", + }, + "ADDRETAINERINVOICECOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "The description of the comment. Max-length [2000]", + "example": "comment added", + "type": "string", + }, + "payment_expected_date": {"example": " ", "type": "string"}, + "show_comment_to_clients": { + "description": "Boolean to check if the comment to be shown to the clients", + "example": True, + "type": "boolean", + }, + }, + "type": "object", + }, + "UPDATERETAINERINVOICECOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": {"description": "The comment on a retainer invoice", "type": "string"}, + "show_comment_to_clients": { + "description": "Boolean to check if the comment to be shown to the clients", + "example": True, + "type": "boolean", + }, + }, + "type": "object", + }, + "CREATESALESORDER_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Manual modification amount applied to " + "the sales order total for rounding " + "corrections, special pricing " + "arrangements, or other " + "business-specific adjustments. Supports " + "positive and negative values for " + "additions or deductions from the order " + "total.", + "example": 0.2, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Textual explanation for the " + "adjustment amount applied " + "to the sales order. " + "Provides audit trail " + "documentation, " + "justification for pricing " + "modifications, and " + "contextual information for " + "financial reporting and " + "compliance verification " + "purposes.", + "example": "Adjustment", + "type": "string", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "billing_address_id": { + "description": "Unique identifier referencing " + "the customer billing address " + "entity. Determines the address " + "used for invoice generation, " + "payment processing, tax " + "jurisdiction calculations, and " + "financial record-keeping. Must " + "correspond to a valid address " + "record associated with the " + "specified customer account.", + "example": 460000000032174, + "type": "string", + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "crm_custom_reference_id": {"type": "string"}, + "crm_owner_id": {"type": "string"}, + "currency_id": { + "description": "Unique identifier for the currency " + "used in the sales order transaction. " + "Determines pricing display, exchange " + "rate calculations, and affects " + "financial reporting. If not specified, " + "the organization default currency will " + "be used automatically. Can be fetched " + "from the Get Currencies API or " + "retrieved from your organization " + "currency settings.", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "description": "Custom fields for a sales order.", + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000639129", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Unique identifier for the customer " + "receiving the sales order. This ID " + "links the order to a specific customer " + "account and determines billing " + "information, payment terms, pricing " + "rules, and tax calculations based on " + "customer settings. Can be fetched from " + "the Get Contacts API or retrieved from " + "existing customer records in your " + "organization.", + "example": "460000000017138", + "type": "string", + }, + "date": { + "description": "Date when the sales order was created in " + "YYYY-MM-DD format. This date affects order " + "processing timelines, delivery schedules, " + "payment terms calculation, and appears on " + "customer-facing documents and internal " + "reports.", + "example": "2014-07-28", + "type": "string", + }, + "delivery_method": { + "description": "Specification of the " + "transportation and delivery " + "mechanism for order fulfillment. " + "Determines shipping costs, " + "delivery timelines, carrier " + "selection, and customer " + "communication regarding order " + "status and tracking information.", + "example": "Air", + "type": "string", + }, + "discount": { + "description": "Discount value applied to the sales order " + "total, specified as either percentage or " + "absolute amount. Supports decimal " + "precision and affects final pricing " + "calculations, tax computations, and " + "financial reporting. Format: percentage " + '(e.g., "12.5%") or amount (e.g., "190").', + "type": "string", + }, + "discount_type": { + "description": "Classification of discount " + "application scope within the sales " + "order. entity_level " + "applies discount to the entire order " + "total, while item_level " + "applies discount to individual line " + "items. Determines discount " + "calculation methodology and affects " + "pricing structure.", + "example": "entity_level", + "type": "string", + }, + "documents": { + "example": ["document_id", "file_name"], + "items": {"type": "string"}, + "type": "array", + }, + "estimate_id": { + "description": "ID of the estimate associated with the Sales Order", + "type": "string", + }, + "exchange_rate": { + "description": "Currency conversion rate from the " + "transaction currency to the " + "organization base currency. Required " + "for multi-currency transactions to " + "ensure accurate financial reporting, " + "profit calculations, and tax " + "computations in the base currency " + "denomination.", + "example": 1.233, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Boolean flag determining " + "the sequence of discount " + "application in tax " + "calculations. When true, " + "discount is applied before " + "tax computation; when " + "false, discount is applied " + "after tax calculation. " + "Affects final pricing " + "accuracy and tax compliance " + "reporting.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "is_update_customer": { + "description": "Boolean flag indicating whether " + "customer billing address " + "information should be " + "synchronized with the sales " + "order data. When enabled, " + "updates the customer master " + "record with address " + "modifications, ensuring data " + "consistency across customer " + "relationship management " + "systems.", + "example": False, + "type": "boolean", + }, + "line_items": { + "description": "Line items of a sales order.", + "items": { + "properties": { + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used " + "to " + "group " + "like " + "customers " + "for " + "exemption " + "purposes. " + "It " + "is " + "a " + "custom " + "value " + "that " + "links " + "customers " + "to " + "a " + "tax " + "rule.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "Description of the line item.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount " + "value " + "applied " + "to " + "the " + "sales " + "order " + "total, " + "specified " + "as " + "either " + "percentage " + "or " + "absolute " + "amount. " + "Supports " + "decimal " + "precision " + "and " + "affects " + "final " + "pricing " + "calculations, " + "tax " + "computations, " + "and " + "financial " + "reporting. " + "Format: " + "percentage " + "(e.g., " + '"12.5%") ' + "or " + "amount " + "(e.g., " + '"190").', + "type": "string", + }, + "hsn_or_sac": { + "description": "Add HSN/SAC code for your goods/services", + "example": 80540, + "type": "string", + "x-node_available_in": ["in", "za", "ke"], + "x-node_unavailable_in": [], + }, + "item_custom_fields": { + "description": "Custom fields for a sales order items.", + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000639129", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "ID of the item.", + "example": "460000000017088", + "type": "string", + }, + "item_order": {"example": 0, "type": "integer"}, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "entity. " + "Specifies " + "the " + "organizational " + "location " + "where " + "the " + "sales " + "order " + "transaction " + "is " + "processed, " + "affecting " + "tax " + "jurisdiction " + "calculations, " + "inventory " + "allocation, " + "reporting " + "segmentation, " + "and " + "location-specific " + "business " + "rules " + "enforcement. " + "Can " + "be " + "retrieved " + "from " + "the " + "Locations " + "API.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name of the line item.", + "example": "Hard Drive", + "type": "string", + }, + "product_type": { + "description": "Enter " + "goods " + "or " + "services " + ".
For " + "SouthAfrica " + "Edition: " + "service, " + "goods, " + "capital_service " + "and " + "capital_goods", + "example": "goods", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Quantity of the line item.", + "example": 40, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Rate of the line item.", + "example": 120, + "format": "double", + "type": "number", + }, + "sat_item_key_code": { + "description": "Add " + "SAT " + "Item " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": 71121206, + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tags": { + "description": "Filter all your reports based on the tag", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 462000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 462000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of Tax Exemption that is applied", + "type": "string", + "x-node_available_in": ["in", "us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption applied", + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the tax or tax group applied", + "example": "460000000017094", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "ID of the TDS tax or TDS tax group applied", + "example": "460000000017098", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit of the line item e.g. kgs, Nos.", + "example": "Nos", + "type": "string", + }, + "unitkey_code": { + "description": "Add " + "SAT " + "Unit " + "Key " + "Code " + "for " + "your " + "goods/services. " + "Download " + "the " + "CFDI " + "Catalogs.", + "example": "E48", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location entity. Specifies the " + "organizational location where the " + "sales order transaction is processed, " + "affecting tax jurisdiction " + "calculations, inventory allocation, " + "reporting segmentation, and " + "location-specific business rules " + "enforcement. Can be retrieved from the " + "Locations API.", + "example": "460000000038080", + "type": "string", + }, + "merchant_id": { + "description": "ID of the merchant", + "example": "460000000000597", + "type": "string", + }, + "notes": { + "description": "Free-form text field containing additional " + "information, instructions, or comments " + "related to the sales order. This field " + "supports internal documentation, " + "customer-specific requirements, special " + "handling instructions, and " + "inter-departmental communication for order " + "processing workflows.", + "type": "string", + }, + "notes_default": {"description": "Default Notes for the Sales Order", "type": "string"}, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Unique identifier for the pricing " + "structure applied to the sales order. " + "Determines item rates, discount " + "rules, and pricing policies based on " + "customer segments, volume tiers, or " + "promotional campaigns. Can be " + "retrieved from the Pricebooks API.", + "type": "string", + }, + "reference_number": { + "description": "External reference identifier for " + "cross-referencing with customer " + "purchase orders, internal " + "tracking systems, or third-party " + "applications. Used for order " + "reconciliation, customer " + "communication, and integration " + "with external business systems " + "and workflows.", + "example": "REF-001", + "type": "string", + }, + "salesorder_number": { + "description": "Unique alphanumeric identifier " + "for the sales order entity. " + "Required when automatic " + "numbering is disabled in " + "organization settings. Must be " + "unique within the organization " + "and follows the configured " + "numbering sequence pattern for " + "sales order identification and " + "tracking.", + "example": "SO-00001", + "type": "string", + }, + "salesperson_id": { + "description": "Unique identifier for the " + "salesperson responsible for this " + "sales order. Links the order to a " + "specific sales representative " + "customer relationship management, " + "and sales reporting purposes.", + "example": "460000000000097", + "type": "string", + }, + "salesperson_name": { + "description": "Full name of the sales " + "representative assigned to this " + "sales order. Automatically " + "populated when salesperson_id is " + "specified.", + "example": "John Roberts", + "type": "string", + }, + "shipment_date": { + "description": "Expected or actual date when goods " + "will be shipped to the customer in " + "YYYY-MM-DD format. Used for delivery " + "planning, customer communication, " + "inventory management, and tracking " + "order fulfillment timelines.", + "type": "string", + }, + "shipping_address_id": { + "description": "Unique identifier referencing " + "the customer shipping address " + "entity. Specifies the delivery " + "destination for goods " + "fulfillment, logistics " + "planning, shipping cost " + "calculations, and delivery " + "confirmation processes. Must " + "correspond to a valid address " + "record within the customer " + "address registry.", + "type": "string", + }, + "shipping_charge": { + "description": "Additional cost associated with " + "product delivery and logistics " + "services. Applied to the sales " + "order total and affects final " + "pricing calculations, profit " + "margins, and customer billing. " + "Supports decimal precision for " + "accurate cost allocation.", + "example": 2, + "format": "double", + "type": "number", + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer.", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Tax Authority's name.", + "type": "string", + "x-node_available_in": ["us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Code of Tax Exemption that is applied", + "type": "string", + "x-node_available_in": ["in", "us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption applied", + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Tax ID for the Sales Order.", + "example": "460000000017094", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the sales " + "order.Allowed Values: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier for the PDF document " + "template used for sales order " + "presentation. Determines document " + "layout, branding elements, formatting " + "specifications, and visual " + "presentation standards for " + "customer-facing documents and printed " + "materials.", + "example": "460000000021001", + "type": "string", + }, + "terms": { + "description": "Contractual terms and conditions governing " + "the sales order transaction. Defines payment " + "obligations, delivery specifications, " + "warranty provisions, liability limitations, " + "and other legal stipulations that establish " + "the binding agreement between the " + "organization and customer for this specific " + "transaction.", + "type": "string", + }, + "terms_default": {"description": "Default Terms of the Sales Order", "type": "string"}, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "sales order. VAT treatment denotes " + "the location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "zcrm_potential_id": { + "description": "Unique identifier linking the " + "sales order to a Zoho CRM " + "potential record.", + "example": "460000000033001", + "type": "string", + }, + "zcrm_potential_name": { + "description": "Descriptive name of the Zoho " + "CRM potential record " + "associated with this sales " + "order.", + "type": "string", + }, + }, + "required": ["customer_id"], + "type": "object", + }, + "UPDATESALESORDERWITHCUSTOMFIELD_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Manual modification amount applied to " + "the sales order total for rounding " + "corrections, special pricing " + "arrangements, or other " + "business-specific adjustments. Supports " + "positive and negative values for " + "additions or deductions from the order " + "total.", + "example": 0.2, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Textual explanation for the " + "adjustment amount applied " + "to the sales order. " + "Provides audit trail " + "documentation, " + "justification for pricing " + "modifications, and " + "contextual information for " + "financial reporting and " + "compliance verification " + "purposes.", + "example": "Adjustment", + "type": "string", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "billing_address_id": { + "description": "Unique identifier referencing " + "the customer billing address " + "entity. Determines the address " + "used for invoice generation, " + "payment processing, tax " + "jurisdiction calculations, and " + "financial record-keeping. Must " + "correspond to a valid address " + "record associated with the " + "specified customer account.", + "example": 460000000032174, + "type": "string", + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "crm_custom_reference_id": {"type": "string"}, + "crm_owner_id": {"type": "string"}, + "currency_id": { + "description": "Unique identifier for the currency " + "used in the sales order transaction. " + "Determines pricing display, exchange " + "rate calculations, and affects " + "financial reporting. If not specified, " + "the organization default currency will " + "be used automatically. Can be fetched " + "from the Get Currencies API or " + "retrieved from your organization " + "currency settings.", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "description": "Custom fields for a sales order.", + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000639129", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Unique identifier for the customer " + "receiving the sales order. This ID " + "links the order to a specific customer " + "account and determines billing " + "information, payment terms, pricing " + "rules, and tax calculations based on " + "customer settings. Can be fetched from " + "the Get Contacts API or retrieved from " + "existing customer records in your " + "organization.", + "example": "460000000017138", + "type": "string", + }, + "date": { + "description": "Date when the sales order was created in " + "YYYY-MM-DD format. This date affects order " + "processing timelines, delivery schedules, " + "payment terms calculation, and appears on " + "customer-facing documents and internal " + "reports.", + "example": "2014-07-28", + "type": "string", + }, + "delivery_method": { + "description": "Specification of the " + "transportation and delivery " + "mechanism for order fulfillment. " + "Determines shipping costs, " + "delivery timelines, carrier " + "selection, and customer " + "communication regarding order " + "status and tracking information.", + "example": "Air", + "type": "string", + }, + "discount": { + "description": "Discount value applied to the sales order " + "total, specified as either percentage or " + "absolute amount. Supports decimal " + "precision and affects final pricing " + "calculations, tax computations, and " + "financial reporting. Format: percentage " + '(e.g., "12.5%") or amount (e.g., "190").', + "type": "string", + }, + "discount_type": { + "description": "Classification of discount " + "application scope within the sales " + "order. entity_level " + "applies discount to the entire order " + "total, while item_level " + "applies discount to individual line " + "items. Determines discount " + "calculation methodology and affects " + "pricing structure.", + "example": "entity_level", + "type": "string", + }, + "documents": { + "example": ["document_id", "file_name"], + "items": {"type": "string"}, + "type": "array", + }, + "exchange_rate": { + "description": "Currency conversion rate from the " + "transaction currency to the " + "organization base currency. Required " + "for multi-currency transactions to " + "ensure accurate financial reporting, " + "profit calculations, and tax " + "computations in the base currency " + "denomination.", + "example": 1.233, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Boolean flag determining " + "the sequence of discount " + "application in tax " + "calculations. When true, " + "discount is applied before " + "tax computation; when " + "false, discount is applied " + "after tax calculation. " + "Affects final pricing " + "accuracy and tax compliance " + "reporting.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "is_update_customer": { + "description": "Boolean flag indicating whether " + "customer billing address " + "information should be " + "synchronized with the sales " + "order data. When enabled, " + "updates the customer master " + "record with address " + "modifications, ensuring data " + "consistency across customer " + "relationship management " + "systems.", + "example": False, + "type": "boolean", + }, + "line_items": { + "description": "Line items of a sales order.", + "items": { + "properties": { + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used " + "to " + "group " + "like " + "customers " + "for " + "exemption " + "purposes. " + "It " + "is " + "a " + "custom " + "value " + "that " + "links " + "customers " + "to " + "a " + "tax " + "rule.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "Description of the line item.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount " + "value " + "applied " + "to " + "the " + "sales " + "order " + "total, " + "specified " + "as " + "either " + "percentage " + "or " + "absolute " + "amount. " + "Supports " + "decimal " + "precision " + "and " + "affects " + "final " + "pricing " + "calculations, " + "tax " + "computations, " + "and " + "financial " + "reporting. " + "Format: " + "percentage " + "(e.g., " + '"12.5%") ' + "or " + "amount " + "(e.g., " + '"190").', + "type": "string", + }, + "item_custom_fields": { + "description": "Custom fields for a sales order items.", + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000639129", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "ID of the item.", + "example": "460000000017088", + "type": "string", + }, + "item_order": {"example": 0, "type": "integer"}, + "line_item_id": { + "description": "ID " + "of " + "the " + "line " + "item. " + "Mandatory " + "if " + "the " + "existing " + "line " + "item " + "has " + "to " + "be " + "updated. " + "If " + "empty, " + "a " + "new " + "line " + "item " + "will " + "be " + "created.", + "example": "460000000039131", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "entity. " + "Specifies " + "the " + "organizational " + "location " + "where " + "the " + "sales " + "order " + "transaction " + "is " + "processed, " + "affecting " + "tax " + "jurisdiction " + "calculations, " + "inventory " + "allocation, " + "reporting " + "segmentation, " + "and " + "location-specific " + "business " + "rules " + "enforcement. " + "Can " + "be " + "retrieved " + "from " + "the " + "Locations " + "API.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name of the line item.", + "example": "Hard Drive", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Quantity of the line item.", + "example": 40, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Rate of the line item.", + "example": 120, + "format": "double", + "type": "number", + }, + "tags": { + "description": "Filter all your reports based on the tag", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 462000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 462000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of Tax Exemption that is applied", + "type": "string", + "x-node_available_in": ["in", "us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption applied", + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Tax ID for the Sales Order.", + "example": "460000000017094", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "ID of the TDS tax or TDS tax group applied", + "example": "460000000017098", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit of the line item e.g. kgs, Nos.", + "example": "Nos", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location entity. Specifies the " + "organizational location where the " + "sales order transaction is processed, " + "affecting tax jurisdiction " + "calculations, inventory allocation, " + "reporting segmentation, and " + "location-specific business rules " + "enforcement. Can be retrieved from the " + "Locations API.", + "example": "460000000038080", + "type": "string", + }, + "merchant_id": { + "description": "ID of the merchant", + "example": "460000000000597", + "type": "string", + }, + "notes": { + "description": "Free-form text field containing additional " + "information, instructions, or comments " + "related to the sales order. This field " + "supports internal documentation, " + "customer-specific requirements, special " + "handling instructions, and " + "inter-departmental communication for order " + "processing workflows.", + "type": "string", + }, + "notes_default": {"description": "Default Notes for the Sales Order", "type": "string"}, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Unique identifier for the pricing " + "structure applied to the sales order. " + "Determines item rates, discount " + "rules, and pricing policies based on " + "customer segments, volume tiers, or " + "promotional campaigns. Can be " + "retrieved from the Pricebooks API.", + "type": "string", + }, + "reference_number": { + "description": "External reference identifier for " + "cross-referencing with customer " + "purchase orders, internal " + "tracking systems, or third-party " + "applications. Used for order " + "reconciliation, customer " + "communication, and integration " + "with external business systems " + "and workflows.", + "example": "REF-001", + "type": "string", + }, + "salesorder_number": { + "description": "Unique alphanumeric identifier " + "for the sales order entity. " + "Required when automatic " + "numbering is disabled in " + "organization settings. Must be " + "unique within the organization " + "and follows the configured " + "numbering sequence pattern for " + "sales order identification and " + "tracking.", + "example": "SO-00001", + "type": "string", + }, + "salesperson_id": { + "description": "Unique identifier for the " + "salesperson responsible for this " + "sales order. Links the order to a " + "specific sales representative " + "customer relationship management, " + "and sales reporting purposes.", + "example": "460000000000097", + "type": "string", + }, + "salesperson_name": { + "description": "Full name of the sales " + "representative assigned to this " + "sales order. Automatically " + "populated when salesperson_id is " + "specified.", + "example": "John Roberts", + "type": "string", + }, + "shipment_date": { + "description": "Expected or actual date when goods " + "will be shipped to the customer in " + "YYYY-MM-DD format. Used for delivery " + "planning, customer communication, " + "inventory management, and tracking " + "order fulfillment timelines.", + "type": "string", + }, + "shipping_address_id": { + "description": "Unique identifier referencing " + "the customer shipping address " + "entity. Specifies the delivery " + "destination for goods " + "fulfillment, logistics " + "planning, shipping cost " + "calculations, and delivery " + "confirmation processes. Must " + "correspond to a valid address " + "record within the customer " + "address registry.", + "type": "string", + }, + "shipping_charge": { + "description": "Additional cost associated with " + "product delivery and logistics " + "services. Applied to the sales " + "order total and affects final " + "pricing calculations, profit " + "margins, and customer billing. " + "Supports decimal precision for " + "accurate cost allocation.", + "example": 2, + "format": "double", + "type": "number", + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer.", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Tax Authority's name.", + "type": "string", + "x-node_available_in": ["us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Code of Tax Exemption that is applied", + "type": "string", + "x-node_available_in": ["in", "us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption applied", + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Tax ID for the Sales Order.", + "example": "460000000017094", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the sales " + "order.Allowed Values: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier for the PDF document " + "template used for sales order " + "presentation. Determines document " + "layout, branding elements, formatting " + "specifications, and visual " + "presentation standards for " + "customer-facing documents and printed " + "materials.", + "example": "460000000021001", + "type": "string", + }, + "terms": { + "description": "Contractual terms and conditions governing " + "the sales order transaction. Defines payment " + "obligations, delivery specifications, " + "warranty provisions, liability limitations, " + "and other legal stipulations that establish " + "the binding agreement between the " + "organization and customer for this specific " + "transaction.", + "type": "string", + }, + "terms_default": {"description": "Default Terms of the Sales Order", "type": "string"}, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "sales order. VAT treatment denotes " + "the location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "zcrm_potential_id": { + "description": "Unique identifier linking the " + "sales order to a Zoho CRM " + "potential record.", + "example": "460000000033001", + "type": "string", + }, + "zcrm_potential_name": { + "description": "Descriptive name of the Zoho " + "CRM potential record " + "associated with this sales " + "order.", + "type": "string", + }, + }, + "required": ["customer_id"], + "type": "object", + }, + "UPDATESALESORDERINZOHOBOOKS_REQUEST_BODY_SCHEMA": { + "properties": { + "adjustment": { + "description": "Manual modification amount applied to " + "the sales order total for rounding " + "corrections, special pricing " + "arrangements, or other " + "business-specific adjustments. Supports " + "positive and negative values for " + "additions or deductions from the order " + "total.", + "example": 0.2, + "format": "double", + "type": "number", + }, + "adjustment_description": { + "description": "Textual explanation for the " + "adjustment amount applied " + "to the sales order. " + "Provides audit trail " + "documentation, " + "justification for pricing " + "modifications, and " + "contextual information for " + "financial reporting and " + "compliance verification " + "purposes.", + "example": "Adjustment", + "type": "string", + }, + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used to group like customers for " + "exemption purposes. It is a custom " + "value that links customers to a " + "tax rule.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "billing_address_id": { + "description": "Unique identifier referencing " + "the customer billing address " + "entity. Determines the address " + "used for invoice generation, " + "payment processing, tax " + "jurisdiction calculations, and " + "financial record-keeping. Must " + "correspond to a valid address " + "record associated with the " + "specified customer account.", + "example": 460000000032174, + "type": "string", + }, + "contact_persons_associated": { + "description": "Contact Persons associated with the transaction.", + "items": { + "properties": { + "communication_preference": { + "description": "Preferred " + "modes " + "of " + "communication " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "properties": { + "is_email_enabled": { + "description": "Used " + "to " + "check " + "if " + "Email " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + }, + "is_whatsapp_enabled": { + "description": "Used " + "to " + "check " + "if " + "WhatsApp " + "communication " + "preference " + "is " + "enabled " + "for " + "the " + "contact " + "person " + "at " + "transaction " + "level.", + "example": True, + "type": "boolean", + "x-node_available_in": ["WhatsApp integration"], + }, + }, + "type": "object", + }, + "contact_person_id": { + "description": "Unique ID of the Contact Person.", + "example": 982000000567003, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "crm_custom_reference_id": {"type": "string"}, + "crm_owner_id": {"type": "string"}, + "currency_id": { + "description": "Unique identifier for the currency " + "used in the sales order transaction. " + "Determines pricing display, exchange " + "rate calculations, and affects " + "financial reporting. If not specified, " + "the organization default currency will " + "be used automatically. Can be fetched " + "from the Get Currencies API or " + "retrieved from your organization " + "currency settings.", + "example": "460000000000097", + "type": "string", + }, + "custom_fields": { + "description": "Custom fields for a sales order.", + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000639129", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "customer_id": { + "description": "Unique identifier for the customer " + "receiving the sales order. This ID " + "links the order to a specific customer " + "account and determines billing " + "information, payment terms, pricing " + "rules, and tax calculations based on " + "customer settings. Can be fetched from " + "the Get Contacts API or retrieved from " + "existing customer records in your " + "organization.", + "example": "460000000017138", + "type": "string", + }, + "date": { + "description": "Date when the sales order was created in " + "YYYY-MM-DD format. This date affects order " + "processing timelines, delivery schedules, " + "payment terms calculation, and appears on " + "customer-facing documents and internal " + "reports.", + "example": "2014-07-28", + "type": "string", + }, + "delivery_method": { + "description": "Specification of the " + "transportation and delivery " + "mechanism for order fulfillment. " + "Determines shipping costs, " + "delivery timelines, carrier " + "selection, and customer " + "communication regarding order " + "status and tracking information.", + "example": "Air", + "type": "string", + }, + "discount": { + "description": "Discount value applied to the sales order " + "total, specified as either percentage or " + "absolute amount. Supports decimal " + "precision and affects final pricing " + "calculations, tax computations, and " + "financial reporting. Format: percentage " + '(e.g., "12.5%") or amount (e.g., "190").', + "type": "string", + }, + "discount_type": { + "description": "Classification of discount " + "application scope within the sales " + "order. entity_level " + "applies discount to the entire order " + "total, while item_level " + "applies discount to individual line " + "items. Determines discount " + "calculation methodology and affects " + "pricing structure.", + "example": "entity_level", + "type": "string", + }, + "documents": { + "example": ["document_id", "file_name"], + "items": {"type": "string"}, + "type": "array", + }, + "exchange_rate": { + "description": "Currency conversion rate from the " + "transaction currency to the " + "organization base currency. Required " + "for multi-currency transactions to " + "ensure accurate financial reporting, " + "profit calculations, and tax " + "computations in the base currency " + "denomination.", + "example": 1.233, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the customer.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_discount_before_tax": { + "description": "Boolean flag determining " + "the sequence of discount " + "application in tax " + "calculations. When true, " + "discount is applied before " + "tax computation; when " + "false, discount is applied " + "after tax calculation. " + "Affects final pricing " + "accuracy and tax compliance " + "reporting.", + "example": True, + "type": "boolean", + }, + "is_inclusive_tax": { + "description": "Used to specify whether the line " + "item rates are inclusive or " + "exclusive of tax.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us", "ca"], + }, + "is_reverse_charge_applied": { + "description": "(Required if customer " + "tax treatment is " + "vat_registered)
Used " + "to specify whether the " + "transaction is " + "applicable for Domestic " + "Reverse Charge (DRC) or " + "not.", + "example": True, + "type": "boolean", + "x-node_available_in": ["za"], + "x-node_unavailable_in": [], + }, + "is_update_customer": { + "description": "Boolean flag indicating whether " + "customer billing address " + "information should be " + "synchronized with the sales " + "order data. When enabled, " + "updates the customer master " + "record with address " + "modifications, ensuring data " + "consistency across customer " + "relationship management " + "systems.", + "example": False, + "type": "boolean", + }, + "line_items": { + "description": "Line items of a sales order.", + "items": { + "properties": { + "avatax_exempt_no": { + "description": "Exemption certificate number of the customer.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "avatax_use_code": { + "description": "Used " + "to " + "group " + "like " + "customers " + "for " + "exemption " + "purposes. " + "It " + "is " + "a " + "custom " + "value " + "that " + "links " + "customers " + "to " + "a " + "tax " + "rule.", + "type": "string", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "description": { + "description": "Description of the line item.", + "example": "500GB, USB 2.0 interface 1400 rpm, protective hard case.", + "type": "string", + }, + "discount": { + "description": "Discount " + "value " + "applied " + "to " + "the " + "sales " + "order " + "total, " + "specified " + "as " + "either " + "percentage " + "or " + "absolute " + "amount. " + "Supports " + "decimal " + "precision " + "and " + "affects " + "final " + "pricing " + "calculations, " + "tax " + "computations, " + "and " + "financial " + "reporting. " + "Format: " + "percentage " + "(e.g., " + '"12.5%") ' + "or " + "amount " + "(e.g., " + '"190").', + "type": "string", + }, + "item_custom_fields": { + "description": "Custom fields for a sales order items.", + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000639129", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "ID of the item.", + "example": "460000000017088", + "type": "string", + }, + "item_order": {"example": 0, "type": "integer"}, + "line_item_id": { + "description": "ID " + "of " + "the " + "line " + "item. " + "Mandatory " + "if " + "the " + "existing " + "line " + "item " + "has " + "to " + "be " + "updated. " + "If " + "empty, " + "a " + "new " + "line " + "item " + "will " + "be " + "created.", + "example": "460000000039131", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location " + "entity. " + "Specifies " + "the " + "organizational " + "location " + "where " + "the " + "sales " + "order " + "transaction " + "is " + "processed, " + "affecting " + "tax " + "jurisdiction " + "calculations, " + "inventory " + "allocation, " + "reporting " + "segmentation, " + "and " + "location-specific " + "business " + "rules " + "enforcement. " + "Can " + "be " + "retrieved " + "from " + "the " + "Locations " + "API.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name of the line item.", + "example": "Hard Drive", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Quantity of the line item.", + "example": 40, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Rate of the line item.", + "example": 120, + "format": "double", + "type": "number", + }, + "tags": { + "description": "Filter all your reports based on the tag", + "items": { + "properties": { + "tag_id": { + "description": "ID of the reporting tag", + "example": 462000000009070, + "type": "string", + }, + "tag_option_id": { + "description": "ID of the reporting tag's option", + "example": 462000000002670, + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_exemption_code": { + "description": "Code of Tax Exemption that is applied", + "type": "string", + "x-node_available_in": ["in", "us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption applied", + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Tax ID for the Sales Order.", + "example": "460000000017094", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
Supported " + "values " + "for " + "Saudi " + "Arabia " + "are " + "ksa_pvt_health, " + "ksa_pvt_edu, " + "ksa_reimbursed_expense " + "and " + "ksa_house_sales.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "ID of the TDS tax or TDS tax group applied", + "example": "460000000017098", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit of the line item e.g. kgs, Nos.", + "example": "Nos", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location entity. Specifies the " + "organizational location where the " + "sales order transaction is processed, " + "affecting tax jurisdiction " + "calculations, inventory allocation, " + "reporting segmentation, and " + "location-specific business rules " + "enforcement. Can be retrieved from the " + "Locations API.", + "example": "460000000038080", + "type": "string", + }, + "merchant_id": { + "description": "ID of the merchant", + "example": "460000000000597", + "type": "string", + }, + "notes": { + "description": "Free-form text field containing additional " + "information, instructions, or comments " + "related to the sales order. This field " + "supports internal documentation, " + "customer-specific requirements, special " + "handling instructions, and " + "inter-departmental communication for order " + "processing workflows.", + "type": "string", + }, + "notes_default": {"description": "Default Notes for the Sales Order", "type": "string"}, + "place_of_supply": { + "description": "Place where the goods/services are " + "supplied to. (If not given, " + "place of contact " + "given for the contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "TN", + "type": "string", + "x-node_available_in": ["in", "gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Unique identifier for the pricing " + "structure applied to the sales order. " + "Determines item rates, discount " + "rules, and pricing policies based on " + "customer segments, volume tiers, or " + "promotional campaigns. Can be " + "retrieved from the Pricebooks API.", + "type": "string", + }, + "reference_number": { + "description": "External reference identifier for " + "cross-referencing with customer " + "purchase orders, internal " + "tracking systems, or third-party " + "applications. Used for order " + "reconciliation, customer " + "communication, and integration " + "with external business systems " + "and workflows.", + "example": "REF-001", + "type": "string", + }, + "salesorder_number": { + "description": "Unique alphanumeric identifier " + "for the sales order entity. " + "Required when automatic " + "numbering is disabled in " + "organization settings. Must be " + "unique within the organization " + "and follows the configured " + "numbering sequence pattern for " + "sales order identification and " + "tracking.", + "example": "SO-00001", + "type": "string", + }, + "salesperson_id": { + "description": "Unique identifier for the " + "salesperson responsible for this " + "sales order. Links the order to a " + "specific sales representative " + "customer relationship management, " + "and sales reporting purposes.", + "example": "460000000000097", + "type": "string", + }, + "salesperson_name": { + "description": "Full name of the sales " + "representative assigned to this " + "sales order. Automatically " + "populated when salesperson_id is " + "specified.", + "example": "John Roberts", + "type": "string", + }, + "shipment_date": { + "description": "Expected or actual date when goods " + "will be shipped to the customer in " + "YYYY-MM-DD format. Used for delivery " + "planning, customer communication, " + "inventory management, and tracking " + "order fulfillment timelines.", + "type": "string", + }, + "shipping_address_id": { + "description": "Unique identifier referencing " + "the customer shipping address " + "entity. Specifies the delivery " + "destination for goods " + "fulfillment, logistics " + "planning, shipping cost " + "calculations, and delivery " + "confirmation processes. Must " + "correspond to a valid address " + "record within the customer " + "address registry.", + "type": "string", + }, + "shipping_charge": { + "description": "Additional cost associated with " + "product delivery and logistics " + "services. Applied to the sales " + "order total and affects final " + "pricing calculations, profit " + "margins, and customer billing. " + "Supports decimal precision for " + "accurate cost allocation.", + "example": 2, + "format": "double", + "type": "number", + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer.", + "type": "string", + "x-node_available_in": ["us"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Tax Authority's name.", + "type": "string", + "x-node_available_in": ["us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_code": { + "description": "Code of Tax Exemption that is applied", + "type": "string", + "x-node_available_in": ["in", "us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_exemption_id": { + "description": "ID of the tax exemption applied", + "type": "string", + "x-node_available_in": ["in", "us"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "Tax ID for the Sales Order.", + "example": "460000000017094", + "type": "string", + }, + "tax_treatment": { + "description": "VAT treatment for the sales " + "order.Allowed Values: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for MX. " + "
For Kenya Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "template_id": { + "description": "Unique identifier for the PDF document " + "template used for sales order " + "presentation. Determines document " + "layout, branding elements, formatting " + "specifications, and visual " + "presentation standards for " + "customer-facing documents and printed " + "materials.", + "example": "460000000021001", + "type": "string", + }, + "terms": { + "description": "Contractual terms and conditions governing " + "the sales order transaction. Defines payment " + "obligations, delivery specifications, " + "warranty provisions, liability limitations, " + "and other legal stipulations that establish " + "the binding agreement between the " + "organization and customer for this specific " + "transaction.", + "type": "string", + }, + "terms_default": {"description": "Default Terms of the Sales Order", "type": "string"}, + "vat_treatment": { + "description": "(Optional) VAT treatment for the " + "sales order. VAT treatment denotes " + "the location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "customer is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registered and " + "if he resides outside the UK then " + "his VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "zcrm_potential_id": { + "description": "Unique identifier linking the " + "sales order to a Zoho CRM " + "potential record.", + "example": "460000000033001", + "type": "string", + }, + "zcrm_potential_name": { + "description": "Descriptive name of the Zoho " + "CRM potential record " + "associated with this sales " + "order.", + "type": "string", + }, + }, + "required": ["customer_id"], + "type": "object", + }, + "UPDATESALESORDERCUSTOMFIELDS_REQUEST_BODY_SCHEMA": { + "description": "Custom fields for a sales order.", + "items": { + "properties": { + "customfield_id": { + "description": "ID of the Custom Field", + "example": "460000000639129", + "format": "int64", + "type": "integer", + }, + "index": {"example": 1, "type": "integer"}, + "label": {"example": "Priority", "type": "string"}, + "value": { + "description": "Value of the Custom Field", + "example": "Normal", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "MARKSALESORDERASVOID_REQUEST_BODY_SCHEMA": { + "properties": { + "reason": { + "description": "Reason to convert sales order as void . " + "Maximum Length: 500 ", + "example": " ", + "type": "string", + } + }, + "type": "object", + }, + "EMAILSALESORDERTOCUSTOMER_REQUEST_BODY_SCHEMA": { + "properties": { + "bcc_mail_ids": { + "description": "Array of email address of the recipients to be BCC ed.", + "example": ["mark@safInstruments.com"], + "items": {"type": "string"}, + "type": "array", + }, + "body": { + "description": "Body of the mail.", + "example": "
Dear SAF Instruments Inc, 

Thanks " + "for your interest in our services. Please find " + "our sales order attached with this mail.

" + "An overview of the sales order is available below " + "for your reference:  

" + "----------------------------------------------------------------------------------------
" + "

Sales Order # : SO-00001


" + "----------------------------------------------------------------------------------------
" + " Order Date      : " + " 28 Jul 2014
 Amount   " + "        : " + "  $12,400.00
----------------------------------------------------------------------------------------

Assuring " + "you of our best services at all " + "times.


Regards,

John
Zillium " + "Inc


", + "type": "string", + }, + "cc_mail_ids": { + "description": "Array of email address of the recipients to be CC ed.", + "example": ["smith@safInstruments.com"], + "items": {"type": "string"}, + "type": "array", + }, + "documents": { + "description": "Documents of the Sales Order", + "format": "binary", + "type": "string", + }, + "from_address_id": { + "description": "From Address of the Email Address", + "example": "johnRoberts@safInstrument.com", + "type": "string", + }, + "invoice_id": { + "description": "ID of the invoice", + "example": 460000000028192, + "type": "string", + }, + "send_from_org_email_id": { + "description": "Boolean to trigger the " + "email from the " + "organization's email " + "address.", + "example": True, + "type": "boolean", + }, + "subject": { + "description": "Subject of the mail.", + "example": "Sales Order from Zillium Inc (Sales Order #: SO-00001)", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email address of the recipients.", + "example": ["john@safInstruments.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids", "subject", "body"], + "type": "object", + }, + "UPDATESALESORDERBILLINGADDRESS_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Address", + "example": "B-1104, 11F, \n" + "Horizon International Tower, \n" + "No. 6, ZhiChun Road, HaiDian District", + "type": "string", + }, + "attention": {"type": "string"}, + "city": {"description": "City of the address", "example": "Beijing", "type": "string"}, + "country": { + "description": "Country of the Address", + "example": "China", + "type": "string", + }, + "fax": {"description": "Fax Number", "example": "+86-10-82637827", "type": "string"}, + "is_one_off_address": {"example": True, "type": "boolean"}, + "is_update_customer": { + "description": "Boolean flag indicating whether " + "customer billing address " + "information should be " + "synchronized with the sales " + "order data. When enabled, " + "updates the customer master " + "record with address " + "modifications, ensuring data " + "consistency across customer " + "relationship management " + "systems.", + "example": False, + "type": "boolean", + }, + "is_verified": { + "description": "Check if the Address is verified", + "type": "boolean", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "phone": { + "description": "Phone Number of the Contact Person.", + "example": "+1-925-921-9201", + "type": "string", + }, + "state": { + "description": "State of the Address", + "example": "Beijing", + "type": "string", + }, + "zip": { + "description": "ZIP Code of the Address", + "example": "1000881", + "type": "string", + }, + }, + "type": "object", + }, + "UPDATESHIPPINGADDRESSSALESORDER_REQUEST_BODY_SCHEMA": { + "properties": { + "address": { + "description": "Address", + "example": "B-1104, 11F, \n" + "Horizon International Tower, \n" + "No. 6, ZhiChun Road, HaiDian District", + "type": "string", + }, + "attention": {"type": "string"}, + "city": {"description": "City of the address", "example": "Beijing", "type": "string"}, + "country": { + "description": "Country of the Address", + "example": "China", + "type": "string", + }, + "fax": {"description": "Fax Number", "example": "+86-10-82637827", "type": "string"}, + "is_one_off_address": {"example": True, "type": "boolean"}, + "is_update_customer": { + "description": "Boolean flag indicating whether " + "customer billing address " + "information should be " + "synchronized with the sales " + "order data. When enabled, " + "updates the customer master " + "record with address " + "modifications, ensuring data " + "consistency across customer " + "relationship management " + "systems.", + "example": False, + "type": "boolean", + }, + "is_verified": { + "description": "Check if the Address is verified", + "type": "boolean", + "x-node_available_in": ["Avalara Integration"], + "x-node_unavailable_in": [], + }, + "state": { + "description": "State of the Address", + "example": "Beijing", + "type": "string", + }, + "zip": { + "description": "ZIP Code of the Address", + "example": "1000881", + "type": "string", + }, + }, + "type": "object", + }, + "ADDSALESORDERCOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "The description of the comment.", + "example": "This is a comment.", + "type": "string", + } + }, + "type": "object", + }, + "UPDATESALESORDERCOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "The description of the comment.", + "example": "This is a comment.", + "type": "string", + } + }, + "type": "object", + }, + "CREATESALESRECEIPT_REQUEST_BODY_SCHEMA": { + "properties": { + "customer_id": { + "description": "Unique identifier for the customer", + "example": "460000000017138", + "type": "string", + }, + "date": { + "description": "Date of the sales receipt", + "example": "2014-07-28", + "type": "string", + }, + "line_items": { + "description": "Line items for the sales receipt", + "items": { + "properties": { + "item_id": { + "description": "ID of the item", + "example": "460000000017088", + "type": "string", + }, + "quantity": { + "description": "Quantity of the item", + "example": 2, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Rate of the item", + "example": 120, + "format": "double", + "type": "number", + }, + "tax_id": { + "description": "ID of the tax to be applied", + "example": "460000000017094", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "notes": { + "description": "Notes for the sales receipt", + "example": "Thank you for your business", + "type": "string", + }, + "payment_mode": { + "description": "Mode through which payment was " + "received. Allowed values: cash, " + "check, credit_card, bank_transfer, " + "etc.", + "example": "cash", + "type": "string", + }, + "receipt_number": { + "description": "Sales receipt number (required if auto-numbering is disabled)", + "example": "SR-00001", + "type": "string", + }, + "terms": { + "description": "Terms and conditions", + "example": "Payment received in full", + "type": "string", + }, + }, + "required": ["customer_id", "payment_mode"], + "type": "object", + }, + "UPDATESALESRECEIPT_REQUEST_BODY_SCHEMA": { + "properties": { + "customer_id": { + "description": "Unique identifier for the customer", + "example": "460000000017138", + "type": "string", + }, + "date": { + "description": "Date of the sales receipt", + "example": "2014-07-28", + "type": "string", + }, + "line_items": { + "description": "Line items for the sales receipt", + "items": { + "properties": { + "item_id": { + "description": "ID of the item", + "example": "460000000017088", + "type": "string", + }, + "quantity": { + "description": "Quantity of the item", + "example": 2, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Rate of the item", + "example": 120, + "format": "double", + "type": "number", + }, + }, + "type": "object", + }, + "type": "array", + }, + "notes": { + "description": "Notes for the sales receipt", + "example": "Thank you for your business", + "type": "string", + }, + "payment_mode": { + "description": "Mode through which payment was received", + "example": "cash", + "type": "string", + }, + "receipt_number": { + "description": "Sales receipt number", + "example": "SR-00001", + "type": "string", + }, + }, + "required": ["customer_id"], + "type": "object", + }, + "EMAILSALESRECEIPTTOCUSTOMER_REQUEST_BODY_SCHEMA": { + "properties": { + "body": { + "description": "Body of the mail", + "example": "Please find the sales receipt attached.", + "type": "string", + }, + "subject": { + "description": "Subject of the mail", + "example": "Sales Receipt from Zillium Inc", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email addresses of the recipients", + "example": ["john@safinstruments.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids", "subject", "body"], + "type": "object", + }, + "ADDPROJECTTASK_REQUEST_BODY_SCHEMA": { + "properties": { + "budget_hours": {"description": "Task budget hours.", "example": "", "type": "integer"}, + "description": { + "description": "The description of the project.", + "example": "", + "type": "string", + }, + "rate": {"description": "Hourly rate for a task.", "example": 3, "type": "integer"}, + "task_name": { + "description": "The name of the task. Max-length [100]", + "example": "Painting", + "type": "string", + }, + }, + "required": ["task_name"], + "type": "object", + }, + "UPDATEPROJECTTASK_REQUEST_BODY_SCHEMA": { + "properties": { + "budget_hours": {"description": "Task budget hours.", "example": "", "type": "integer"}, + "description": { + "description": "The description of the project.", + "example": "", + "type": "string", + }, + "rate": {"description": "Hourly rate for a task.", "example": 3, "type": "integer"}, + "task_name": { + "description": "The name of the task. Max-length [100]", + "example": "Painting", + "type": "string", + }, + }, + "required": ["task_name"], + "type": "object", + }, + "CREATEASSOCIATEDTAX_REQUEST_BODY_SCHEMA": { + "properties": { + "country_code": { + "description": "Two letter country code for the EU " + "country to which the tax belongs.", + "example": "UK", + "type": "string", + "x-node_available_in": ["uk", "eu", "gcc", "global"], + "x-node_unavailable_in": [], + }, + "is_editable": { + "description": "Check if tax is editable", + "example": True, + "type": "boolean", + }, + "is_value_added": { + "description": "Check if Tax is Value Added", + "example": False, + "type": "boolean", + }, + "purchase_tax_expense_account_id": { + "description": "Account ID in which Purchase Tax will be Computed", + "format": "int64", + "type": "integer", + "x-node_available_in": ["au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": "460000000066001", + "type": "string", + "x-node_available_in": ["us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Name of the Tax Authority", + "example": "Illinois Department of Revenue", + "type": "string", + }, + "tax_factor": { + "description": "Type of Tax Factor. Allowed values: " + "rate, share", + "example": "rate", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tax_name": { + "description": "Name of the Tax", + "example": "Sales Group", + "type": "string", + }, + "tax_percentage": { + "description": "Number of Percentage Taxable.", + "example": 10.5, + "format": "double", + "type": "number", + }, + "tax_specific_type": { + "description": "Type of Tax For Indian " + "Edition. Allowed Values : " + "igst " + ",cgst " + ",sgst " + ",nil, cess " + ".
Type of Tax for " + "Mexico Edition. Allowed " + "Values : isr, " + "iva, " + "ieps.
Type of " + "Tax for South Africa " + "Edition. Allowed Values : " + "
soa_less_than_28d " + "- Supply of accommodation not " + "exceeding 28 days, " + "
soa_more_than_28d " + "- Supply of accommodation " + "exceeding than 28 days, " + "
ciu_prev_tax_supply " + "- Change in use (Taxable " + "supplies), " + "
ciu_prev_nontax_supply " + "- Change in use (Non-Taxable " + "supplies), " + "
export_of_shg " + "- Export of second hand goods.", + "type": "string", + "x-node_available_in": ["in", "mx", "za"], + "x-node_unavailable_in": [], + }, + "tax_type": { + "description": "Type to determine whether it is a simple " + "or compound tax. Allowed Values: " + "tax and compound_tax", + "example": "tax", + "type": "string", + }, + "update_draft_invoice": { + "description": "Check if Draft Invoices should be updated", + "example": False, + "type": "boolean", + }, + "update_draft_so": { + "description": "Check if Draft Sales Orders should be updated", + "example": False, + "type": "boolean", + }, + "update_project": { + "description": "Check if Projects should be updated", + "example": False, + "type": "boolean", + }, + "update_recurring_bills": { + "description": "Check if Recurring Bills should be updated", + "example": False, + "type": "boolean", + }, + "update_recurring_expense": { + "description": "Check if recurring expenses should be updated", + "example": False, + "type": "boolean", + }, + "update_recurring_invoice": { + "description": "Check if recurring invoice should be updated", + "example": False, + "type": "boolean", + }, + "update_subscription": { + "description": "Check if Subscriptions should be updated", + "example": False, + "type": "boolean", + }, + }, + "type": "object", + }, + "UPDATETAXDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "country_code": { + "description": "Two letter country code for the EU " + "country to which the tax belongs.", + "example": "UK", + "type": "string", + "x-node_available_in": ["uk", "eu", "gcc", "global"], + "x-node_unavailable_in": [], + }, + "is_editable": { + "description": "Check if tax is editable", + "example": True, + "type": "boolean", + }, + "is_value_added": { + "description": "Check if Tax is Value Added", + "example": False, + "type": "boolean", + }, + "purchase_tax_expense_account_id": { + "description": "Account ID in which Purchase Tax will be Computed", + "format": "int64", + "type": "integer", + "x-node_available_in": ["au", "ca"], + "x-node_unavailable_in": [], + }, + "tax_authority_id": { + "description": "ID of the tax authority. Tax " + "authority depends on the location " + "of the customer. For example, if " + "the customer is located in NY, " + "then the tax authority is NY tax " + "authority.", + "example": "460000000066001", + "type": "string", + "x-node_available_in": ["us", "mx"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Name of the Tax Authority", + "example": "Illinois Department of Revenue", + "type": "string", + }, + "tax_factor": { + "description": "Type of Tax Factor. Allowed values: " + "rate, share", + "example": "rate", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "tax_id": { + "description": "ID of the Tax", + "example": "982000000566009", + "type": "string", + }, + "tax_name": { + "description": "Name of the Tax", + "example": "Sales Group", + "type": "string", + }, + "tax_percentage": { + "description": "Number of Percentage Taxable.", + "example": 10.5, + "format": "double", + "type": "number", + }, + "tax_specific_type": { + "description": "Type of Tax For Indian " + "Edition. Allowed Values : " + "igst " + ",cgst " + ",sgst " + ",nil, cess " + ".
Type of Tax for " + "Mexico Edition. Allowed " + "Values : isr, " + "iva, " + "ieps.
Type of " + "Tax for South Africa " + "Edition. Allowed Values : " + "
soa_less_than_28d " + "- Supply of accommodation not " + "exceeding 28 days, " + "
soa_more_than_28d " + "- Supply of accommodation " + "exceeding than 28 days, " + "
ciu_prev_tax_supply " + "- Change in use (Taxable " + "supplies), " + "
ciu_prev_nontax_supply " + "- Change in use (Non-Taxable " + "supplies), " + "
export_of_shg " + "- Export of second hand goods.", + "type": "string", + "x-node_available_in": ["in", "mx", "za"], + "x-node_unavailable_in": [], + }, + "tax_type": { + "description": "Type to determine whether it is a simple " + "or compound tax. Allowed Values: " + "tax and compound_tax", + "example": "tax", + "type": "string", + }, + "tds_payable_account_id": { + "description": "Input Tax ID. The amount of " + "money charged to you as Tax " + "on your purchases.", + "example": "132086000000107337", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "update_draft_invoice": { + "description": "Check if Draft Invoices should be updated", + "example": False, + "type": "boolean", + }, + "update_draft_so": { + "description": "Check if Draft Sales Orders should be updated", + "example": False, + "type": "boolean", + }, + "update_project": { + "description": "Check if Projects should be updated", + "example": False, + "type": "boolean", + }, + "update_recurring_bills": { + "description": "Check if Recurring Bills should be updated", + "example": False, + "type": "boolean", + }, + "update_recurring_expense": { + "description": "Check if recurring expenses should be updated", + "example": False, + "type": "boolean", + }, + "update_recurring_invoice": { + "description": "Check if recurring invoice should be updated", + "example": False, + "type": "boolean", + }, + "update_subscription": { + "description": "Check if Subscriptions should be updated", + "example": False, + "type": "boolean", + }, + }, + "type": "object", + }, + "UPDATETAXGROUPDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "tax_group_name": { + "description": "Name of the tax group to be created.", + "example": "Sales Group", + "type": "string", + }, + "taxes": { + "description": "Comma Seperated list of tax IDs that are to " + "be associated to the tax group.", + "example": "982000000566009", + "type": "string", + }, + }, + "type": "object", + }, + "CREATETAXGROUP_REQUEST_BODY_SCHEMA": { + "properties": { + "tax_group_name": { + "description": "Name of the tax group to be created.", + "example": "Sales Group", + "type": "string", + }, + "taxes": { + "description": "Comma Seperated list of tax IDs that are to " + "be associated to the tax group.", + "example": "982000000566009", + "type": "string", + }, + }, + "type": "object", + }, + "CREATETAXAUTHORITY_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "Description.", + "example": "The New York State Department of Taxation and Finance", + "type": "string", + }, + "registration_number": { + "description": "Registration Number of the Tax Authority", + "type": "string", + "x-node_available_in": ["ca"], + "x-node_unavailable_in": [], + }, + "registration_number_label": { + "type": "string", + "x-node_available_in": ["ca"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Name of the Tax Authority", + "example": "Illinois Department of Revenue", + "type": "string", + }, + }, + "required": ["tax_authority_name"], + "type": "object", + }, + "UPDATETAXAUTHORITYDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "Description.", + "example": "The New York State Department of Taxation and Finance", + "type": "string", + }, + "registration_number": { + "description": "Registration Number of the Tax Authority", + "type": "string", + "x-node_available_in": ["ca"], + "x-node_unavailable_in": [], + }, + "registration_number_label": { + "type": "string", + "x-node_available_in": ["ca"], + "x-node_unavailable_in": [], + }, + "tax_authority_name": { + "description": "Name of the Tax Authority", + "example": "Illinois Department of Revenue", + "type": "string", + }, + }, + "type": "object", + }, + "CREATETAXEXEMPTION_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "Description", + "example": "Tax exempted because the contact is a reseller.", + "type": "string", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "example": "RESELLER", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "type": { + "description": "Type of the tax exemption, can be " + "customer or item.", + "example": "customer", + "type": "string", + }, + }, + "required": ["tax_exemption_code", "type"], + "type": "object", + }, + "UPDATETAXEXEMPTIONDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "Description", + "example": "Tax exempted because the contact is a reseller.", + "type": "string", + }, + "tax_exemption_code": { + "description": "Code of the Tax Exemption", + "example": "RESELLER", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "type": { + "description": "Type of the tax exemption, can be " + "customer or item.", + "example": "customer", + "type": "string", + }, + }, + "required": ["tax_exemption_code", "type"], + "type": "object", + }, + "LOGTIMEENTRIES_REQUEST_BODY_SCHEMA": { + "properties": { + "begin_time": { + "description": "Time the user started working on this " + "task. Time-Format [HH:mm]", + "example": "10:00", + "type": "string", + }, + "cost_rate": { + "description": "Hourly cost rate", + "example": 10, + "format": "double", + "type": "number", + }, + "end_time": { + "description": "Time the user stopped working on this " + "task. Time-Format [HH:mm]", + "example": "15:00", + "type": "string", + }, + "is_billable": { + "description": "Whether it is billable or not.", + "example": True, + "type": "boolean", + }, + "log_date": { + "description": "Date on which the user spent on the task. " + "Date-Format [HH:mm]", + "example": "2013-09-17", + "type": "string", + }, + "log_time": { + "description": "Time the user spent on this task. Either " + "send this attribute or begin and end time " + "attributes. Time-Format " + "[HH:mm]", + "example": " ", + "type": "string", + }, + "notes": { + "description": "Description of the work done. Max-length [500]", + "example": " ", + "type": "string", + }, + "project_id": { + "description": "ID of the project.", + "example": "Network Distribution", + "type": "string", + }, + "start_timer": {"description": "Start timer.", "example": " ", "type": "string"}, + "task_id": { + "description": "ID of the task.", + "example": "460000000044001", + "type": "string", + }, + "user_id": { + "description": "ID of the user.", + "example": "460000000024003", + "type": "string", + }, + }, + "required": ["project_id", "task_id", "user_id", "log_date"], + "type": "object", + }, + "UPDATETIMEENTRY_REQUEST_BODY_SCHEMA": { + "properties": { + "begin_time": { + "description": "Time the user started working on this " + "task. Time-Format [HH:mm]", + "example": "10:00", + "type": "string", + }, + "cost_rate": { + "description": "Hourly cost rate", + "example": 0, + "format": "double", + "type": "number", + }, + "end_time": { + "description": "Time the user stopped working on this " + "task. Time-Format [HH:mm]", + "example": "15:00", + "type": "string", + }, + "is_billable": { + "description": "Whether it is billable or not.", + "example": True, + "type": "boolean", + }, + "log_date": { + "description": "Date on which the user spent on the task. " + "Date-Format [HH:mm]", + "example": "2013-09-17", + "type": "string", + }, + "log_time": { + "description": "Time the user spent on this task. Either " + "send this attribute or begin and end time " + "attributes. Time-Format " + "[HH:mm]", + "example": " ", + "type": "string", + }, + "notes": { + "description": "Description of the work done. Max-length [500]", + "example": " ", + "type": "string", + }, + "project_id": { + "description": "ID of the project.", + "example": "Network Distribution", + "type": "string", + }, + "start_timer": {"description": "Start timer.", "example": " ", "type": "string"}, + "task_id": { + "description": "ID of the task.", + "example": "460000000044001", + "type": "string", + }, + "user_id": { + "description": "ID of the user.", + "example": "460000000024003", + "type": "string", + }, + }, + "required": ["project_id", "task_id", "user_id", "log_date"], + "type": "object", + }, + "CREATEORGANIZATIONUSER_REQUEST_BODY_SCHEMA": { + "properties": { + "cost_rate": { + "description": "Hourly cost rate", + "example": 0, + "format": "double", + "type": "number", + }, + "email": { + "description": "email address of the user", + "example": "johndavid@zilliuminc.com", + "type": "string", + }, + "name": {"description": "name of the user", "example": "Sujin Kumar", "type": "string"}, + "role_id": {"example": "982000000006005", "type": "string"}, + }, + "required": ["name", "email"], + "type": "object", + }, + "UPDATEUSERDETAILS_REQUEST_BODY_SCHEMA": { + "properties": { + "cost_rate": { + "description": "Hourly cost rate", + "example": 0, + "format": "double", + "type": "number", + }, + "email": { + "description": "email address of the user", + "example": "johndavid@zilliuminc.com", + "type": "string", + }, + "name": {"description": "name of the user", "example": "Sujin Kumar", "type": "string"}, + "role_id": {"example": "982000000006005", "type": "string"}, + }, + "required": ["name", "email"], + "type": "object", + }, + "CREATEVENDORCREDIT_REQUEST_BODY_SCHEMA": { + "properties": { + "currency_id": { + "description": "Unique identifier for the currency " + "used in the vendor credit. Can differ " + "from vendor currency if multi-currency " + "is enabled. Retrieve currency IDs from " + "the List Currencies API endpoint in " + "the currency section.", + "example": "3000000000083", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "custom_field_id": { + "description": "ID of the Custom Field", + "format": "int64", + "type": "integer", + }, + "index": {"description": "Index of the Custom Field", "type": "integer"}, + "label": {"description": "Label of the Custom Field", "type": "string"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "The date on which the vendor credit is " + "created. Must be in yyyy-mm-dd format. This " + "date determines the accounting period and " + "affects tax calculations.", + "example": "2014-08-28", + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "documents": { + "items": { + "properties": { + "document_id": { + "description": "ID of the Document", + "format": "int64", + "type": "integer", + }, + "file_name": {"description": "Name of the file", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "exchange_rate": { + "description": "Exchange rate for converting the " + "vendor credit currency to base " + "currency. Required when currency " + "differs from base currency. Retrieve " + "rates from currency exchange rate " + "APIs.", + "example": 1, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_inclusive_tax": { + "description": "Set to true if line item rates " + "include tax amounts. When true, " + "tax is already included in the " + "item rates. When false, tax will " + "be calculated and added to the " + "rates.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "is_update_customer": { + "description": "Set to true to update customer " + "information when creating the " + "vendor credit. This will modify " + "the associated customer record " + "with new details from the " + "vendor credit.", + "example": False, + "type": "boolean", + }, + "line_items": { + "description": "Line items of a vendor credit.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "for " + "the " + "chart " + "of " + "accounts " + "entry. " + "Retrieve " + "account " + "IDs " + "from " + "the " + "List " + "Chart " + "of " + "Accounts " + "API " + "endpoint. " + "Determines " + "which " + "account " + "the " + "line " + "item " + "affects " + "for " + "accounting " + "purposes.", + "example": "460000000020097", + "type": "string", + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item. " + "Provides " + "additional " + "information " + "about " + "the " + "product " + "or " + "service " + "being " + "credited. " + "Displayed " + "on " + "the " + "vendor " + "credit " + "document.", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN Code", + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_custom_fields": { + "items": { + "properties": { + "custom_field_id": { + "description": "ID of the Custom Field", + "format": "int64", + "type": "integer", + }, + "index": { + "description": "Index of the Custom Field", + "type": "integer", + }, + "label": { + "description": "Label of the Custom Field", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "item " + "in " + "the " + "line " + "item. " + "Retrieve " + "item " + "IDs " + "from " + "the " + "List " + "Items " + "API " + "endpoint " + "in " + "the " + "items " + "section. " + "Links " + "the " + "line " + "item " + "to " + "a " + "specific " + "product " + "or " + "service.", + "example": "460000000020071", + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "number " + "for " + "the " + "line " + "item. " + "Determines " + "the " + "display " + "order " + "of " + "line " + "items " + "on " + "the " + "vendor " + "credit " + "document. " + "Lower " + "numbers " + "appear " + "first.", + "example": 0, + "type": "integer", + }, + "line_item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "line " + "item " + "within " + "the " + "vendor " + "credit. " + "System-generated " + "ID " + "used " + "for " + "identifying " + "and " + "referencing " + "specific " + "line " + "items " + "in " + "the " + "vendor " + "credit.", + "example": "460000000020077", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location. " + "Retrieve " + "location " + "IDs " + "from " + "the " + "List " + "Locations " + "API " + "endpoint " + "in " + "the " + "locations " + "section. " + "Determines " + "tax " + "settings " + "and " + "business " + "rules.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "or " + "title " + "of " + "the " + "line " + "item. " + "Describes " + "the " + "product " + "or " + "service " + "being " + "credited. " + "This " + "name " + "is " + "displayed " + "on " + "the " + "vendor " + "credit " + "document.", + "example": "Premium Plan - Web hosting", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "being " + "credited " + "for " + "this " + "line " + "item. " + "Must " + "be " + "a " + "positive " + "number. " + "Used " + "to " + "calculate " + "the " + "total " + "amount " + "for " + "the " + "line " + "item.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit " + "price " + "or " + "rate " + "for " + "the " + "line " + "item. " + "The " + "amount " + "per " + "unit " + "before " + "taxes " + "and " + "discounts. " + "Used " + "with " + "quantity " + "to " + "calculate " + "the " + "line " + "total.", + "example": 30, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "ID of the reverse charge tax", + "example": 460000000057089, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "serial_numbers": {"items": {"type": "string"}, "type": "array"}, + "tags": { + "description": "Array " + "of " + "tags " + "associated " + "with " + "the " + "line " + "item. " + "Each " + "tag " + "contains " + "tag_id " + "and " + "tag_option_id " + "for " + "categorization " + "and " + "tracking " + "purposes.", + "items": { + "properties": { + "tag_id": { + "description": "ID of the tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "ID of the tag option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_id": { + "description": "Unique " + "identifier " + "for " + "the " + "tax " + "applied " + "to " + "the " + "line " + "item. " + "Retrieve " + "tax " + "IDs " + "from " + "the " + "List " + "Taxes " + "API " + "endpoint " + "in " + "the " + "taxes " + "section. " + "Determines " + "tax " + "calculations " + "for " + "this " + "line " + "item.", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "TDS " + "Tax " + "ID " + "of " + "the " + "Tax " + "associated " + "with " + "the " + "Vendor " + "Credit", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "line " + "item " + "quantity. " + "Examples: " + "kgs, " + "Nos, " + "hours, " + "pieces. " + "Used " + "to " + "specify " + "how " + "the " + "quantity " + "is " + "measured.", + "example": "Nos", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location. Retrieve location IDs from " + "the List Locations API endpoint in the " + "locations section. Determines tax " + "settings and business rules.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional notes or comments for the vendor " + "credit. Displayed on the vendor credit " + "document for vendor reference. Max-length " + "[5000]", + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Unique identifier for the pricebook " + "used for pricing items in the vendor " + "credit. Retrieve pricebook IDs from " + "the pricebooks API endpoint.", + "type": "string", + }, + "reference_number": { + "description": "Optional reference number for " + "tracking purposes. Can be any " + "custom string or auto-generated. " + "Useful for linking to external " + "systems or internal tracking. " + "Max-Length [100]", + "type": "string", + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "VAT treatment for the vendor credit. " + "Choose whether the vendor falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment for the vendor " + "credits. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registeredand if " + "he resides outside the EU then his " + "VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_credit_number": { + "description": "Mandatory if auto number generation is disabled.", + "example": "DN-00002", + "type": "string", + }, + "vendor_id": { + "description": "Unique identifier for the vendor " + "contact. Retrieve vendor IDs from the " + "Get Contacts API endpoint in the " + "contacts section. This ID links the " + "vendor credit to the specific vendor " + "record.", + "example": "460000000020029", + "type": "string", + }, + }, + "required": ["vendor_id"], + "type": "object", + }, + "UPDATEVENDORCREDIT_REQUEST_BODY_SCHEMA": { + "properties": { + "currency_id": { + "description": "Unique identifier for the currency " + "used in the vendor credit. Can differ " + "from vendor currency if multi-currency " + "is enabled. Retrieve currency IDs from " + "the List Currencies API endpoint in " + "the currency section.", + "example": "3000000000083", + "type": "string", + }, + "custom_fields": { + "items": { + "properties": { + "custom_field_id": { + "description": "ID of the Custom Field", + "format": "int64", + "type": "integer", + }, + "index": {"description": "Index of the Custom Field", "type": "integer"}, + "label": {"description": "Label of the Custom Field", "type": "string"}, + "value": {"description": "Value of the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "The date on which the vendor credit is " + "created. Must be in yyyy-mm-dd format. This " + "date determines the accounting period and " + "affects tax calculations.", + "example": "2014-08-28", + "type": "string", + }, + "destination_of_supply": { + "description": "Place where the " + "goods/services are supplied " + "to. (If not given, " + "organisation's home state " + "will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "documents": { + "items": { + "properties": { + "document_id": { + "description": "ID of the Document", + "format": "int64", + "type": "integer", + }, + "file_name": {"description": "Name of the file", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "exchange_rate": { + "description": "Exchange rate for converting the " + "vendor credit currency to base " + "currency. Required when currency " + "differs from base currency. Retrieve " + "rates from currency exchange rate " + "APIs.", + "example": 1, + "format": "double", + "type": "number", + }, + "gst_no": { + "description": "15 digit GST identification number of the vendor.", + "example": "22AAAAA0000A1Z5", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "gst_treatment": { + "description": "Choose whether the contact is GST " + "registered/unregistered/consumer/overseas. " + "Allowed values are " + "business_gst , " + "business_none , " + "overseas , consumer " + ".", + "example": "business_gst", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "is_inclusive_tax": { + "description": "Set to true if line item rates " + "include tax amounts. When true, " + "tax is already included in the " + "item rates. When false, tax will " + "be calculated and added to the " + "rates.", + "example": False, + "type": "boolean", + "x-node_available_in": [], + "x-node_unavailable_in": ["us"], + }, + "is_update_customer": { + "description": "Set to true to update customer " + "information when creating the " + "vendor credit. This will modify " + "the associated customer record " + "with new details from the " + "vendor credit.", + "example": False, + "type": "boolean", + }, + "line_items": { + "description": "Line items of a vendor credit.", + "items": { + "properties": { + "account_id": { + "description": "Unique " + "identifier " + "for " + "the " + "chart " + "of " + "accounts " + "entry. " + "Retrieve " + "account " + "IDs " + "from " + "the " + "List " + "Chart " + "of " + "Accounts " + "API " + "endpoint. " + "Determines " + "which " + "account " + "the " + "line " + "item " + "affects " + "for " + "accounting " + "purposes.", + "example": "460000000020097", + "type": "string", + }, + "description": { + "description": "Detailed " + "description " + "of " + "the " + "line " + "item. " + "Provides " + "additional " + "information " + "about " + "the " + "product " + "or " + "service " + "being " + "credited. " + "Displayed " + "on " + "the " + "vendor " + "credit " + "document.", + "type": "string", + }, + "hsn_or_sac": { + "description": "HSN Code", + "type": "string", + "x-node_available_in": ["in", "ke", "za"], + "x-node_unavailable_in": [], + }, + "item_custom_fields": { + "items": { + "properties": { + "custom_field_id": { + "description": "ID of the Custom Field", + "format": "int64", + "type": "integer", + }, + "index": { + "description": "Index of the Custom Field", + "type": "integer", + }, + "label": { + "description": "Label of the Custom Field", + "type": "string", + }, + "value": { + "description": "Value of the Custom Field", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "item " + "in " + "the " + "line " + "item. " + "Retrieve " + "item " + "IDs " + "from " + "the " + "List " + "Items " + "API " + "endpoint " + "in " + "the " + "items " + "section. " + "Links " + "the " + "line " + "item " + "to " + "a " + "specific " + "product " + "or " + "service.", + "example": "460000000020071", + "type": "string", + }, + "item_order": { + "description": "Sequential " + "order " + "number " + "for " + "the " + "line " + "item. " + "Determines " + "the " + "display " + "order " + "of " + "line " + "items " + "on " + "the " + "vendor " + "credit " + "document. " + "Lower " + "numbers " + "appear " + "first.", + "example": 0, + "type": "integer", + }, + "line_item_id": { + "description": "Unique " + "identifier " + "for " + "the " + "line " + "item " + "within " + "the " + "vendor " + "credit. " + "System-generated " + "ID " + "used " + "for " + "identifying " + "and " + "referencing " + "specific " + "line " + "items " + "in " + "the " + "vendor " + "credit.", + "example": "460000000020077", + "type": "string", + }, + "location_id": { + "description": "Unique " + "identifier " + "for " + "the " + "business " + "location. " + "Retrieve " + "location " + "IDs " + "from " + "the " + "List " + "Locations " + "API " + "endpoint " + "in " + "the " + "locations " + "section. " + "Determines " + "tax " + "settings " + "and " + "business " + "rules.", + "example": "460000000038080", + "type": "string", + }, + "name": { + "description": "Name " + "or " + "title " + "of " + "the " + "line " + "item. " + "Describes " + "the " + "product " + "or " + "service " + "being " + "credited. " + "This " + "name " + "is " + "displayed " + "on " + "the " + "vendor " + "credit " + "document.", + "example": "Premium Plan - Web hosting", + "type": "string", + }, + "project_id": { + "description": "ID of the project", + "example": 90300000087378, + "type": "string", + }, + "quantity": { + "description": "Number " + "of " + "units " + "being " + "credited " + "for " + "this " + "line " + "item. " + "Must " + "be " + "a " + "positive " + "number. " + "Used " + "to " + "calculate " + "the " + "total " + "amount " + "for " + "the " + "line " + "item.", + "example": 1, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Unit " + "price " + "or " + "rate " + "for " + "the " + "line " + "item. " + "The " + "amount " + "per " + "unit " + "before " + "taxes " + "and " + "discounts. " + "Used " + "with " + "quantity " + "to " + "calculate " + "the " + "line " + "total.", + "example": 30, + "format": "double", + "type": "number", + }, + "reverse_charge_tax_id": { + "description": "ID of the reverse charge tax", + "example": 460000000057089, + "type": "string", + "x-node_available_in": ["in", "gcc", "za"], + "x-node_unavailable_in": [], + }, + "serial_numbers": {"items": {"type": "string"}, "type": "array"}, + "tags": { + "description": "Array " + "of " + "tags " + "associated " + "with " + "the " + "line " + "item. " + "Each " + "tag " + "contains " + "tag_id " + "and " + "tag_option_id " + "for " + "categorization " + "and " + "tracking " + "purposes.", + "items": { + "properties": { + "tag_id": { + "description": "ID of the tag", + "format": "int64", + "type": "integer", + }, + "tag_option_id": { + "description": "ID of the tag option", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tax_id": { + "description": "Unique " + "identifier " + "for " + "the " + "tax " + "applied " + "to " + "the " + "line " + "item. " + "Retrieve " + "tax " + "IDs " + "from " + "the " + "List " + "Taxes " + "API " + "endpoint " + "in " + "the " + "taxes " + "section. " + "Determines " + "tax " + "calculations " + "for " + "this " + "line " + "item.", + "type": "string", + }, + "tax_treatment_code": { + "description": "Specify " + "reason " + "for " + "using " + "out " + "of " + "scope.
Supported " + "values " + "for " + "UAE " + "are " + "uae_same_tax_group, " + "uae_reimbursed_expense " + "and " + "uae_others.
" + "Supported " + "values " + "for " + "Bahrain " + "are " + "bahrain_same_tax_group, " + "bahrain_transfer_of_concern, " + "bahrain_disbursement, " + "bahrain_head_to_branch_transaction, " + "bahrain_warranty_repair_services " + "and " + "bahrain_others.
" + "Supported " + "values " + "for " + "KSA " + "are " + "ksa_reimbursed_expense.", + "example": "uae_others", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "tds_tax_id": { + "description": "TDS " + "Tax " + "ID " + "of " + "the " + "Tax " + "associated " + "with " + "the " + "Vendor " + "Credit", + "type": "string", + "x-node_available_in": ["mx"], + "x-node_unavailable_in": [], + }, + "unit": { + "description": "Unit " + "of " + "measurement " + "for " + "the " + "line " + "item " + "quantity. " + "Examples: " + "kgs, " + "Nos, " + "hours, " + "pieces. " + "Used " + "to " + "specify " + "how " + "the " + "quantity " + "is " + "measured.", + "example": "Nos", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "location_id": { + "description": "Unique identifier for the business " + "location. Retrieve location IDs from " + "the List Locations API endpoint in the " + "locations section. Determines tax " + "settings and business rules.", + "example": "460000000038080", + "type": "string", + }, + "notes": { + "description": "Additional notes or comments for the vendor " + "credit. Displayed on the vendor credit " + "document for vendor reference. Max-length " + "[5000]", + "type": "string", + }, + "place_of_supply": { + "description": "The place of supply is where a " + "transaction is considered to have " + "occurred for VAT purposes. For the " + "supply of goods, the place of " + "supply is the location of the " + "goods when the supply occurs. For " + "the supply of services, the place " + "of supply should be where the " + "supplier is established. (If not " + "given, place of " + "contact given for the " + "contact will be " + "taken)
Supported codes for UAE " + "emirates are :
Abu Dhabi - " + "AB,
Ajman - " + "AJ,
Dubai - " + "DU,
Fujairah - " + "FU,
Ras " + "al-Khaimah - " + "RA,
Sharjah - " + "SH,
Umm al-Quwain " + "- UM.
Supported " + "codes for the GCC countries are : " + "
United Arab Emirates - " + "AE,
Saudi Arabia " + "- SA,
Bahrain - " + "BH,
Kuwait - " + "KW,
Oman - " + "OM,
Qatar - " + "QA.", + "example": "DU", + "type": "string", + "x-node_available_in": ["gcc"], + "x-node_unavailable_in": [], + }, + "pricebook_id": { + "description": "Unique identifier for the pricebook " + "used for pricing items in the vendor " + "credit. Retrieve pricebook IDs from " + "the pricebooks API endpoint.", + "type": "string", + }, + "reference_number": { + "description": "Optional reference number for " + "tracking purposes. Can be any " + "custom string or auto-generated. " + "Useful for linking to external " + "systems or internal tracking. " + "Max-Length [100]", + "type": "string", + }, + "source_of_supply": { + "description": "Place from where the " + "goods/services are supplied. (If " + "not given, place of " + "contact given for the " + "contact will be taken)", + "example": "TN", + "type": "string", + "x-node_available_in": ["in"], + "x-node_unavailable_in": [], + }, + "tax_treatment": { + "description": "VAT treatment for the vendor credit. " + "Choose whether the vendor falls " + "under: " + "vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered " + "and " + "dz_vat_not_registered " + "are supported only for " + "UAE.
home_country_mexico,border_region_mexico,non_mexico " + "supported only for " + "MX.
For Kenya " + "Edition: " + "vat_registered " + ",vat_not_registered " + ",non_kenya(A business " + "that is located outside " + "Kenya).
For SouthAfrica " + "Edition: " + "vat_registered, " + "vat_not_registered, " + "overseas(A business " + "that is located outside " + "SouthAfrica).", + "example": "vat_registered", + "type": "string", + "x-node_available_in": ["gcc", "mx", "ke", "za"], + "x-node_unavailable_in": [], + }, + "vat_treatment": { + "description": "VAT treatment for the vendor " + "credits. VAT treatment denotes the " + "location of the customer, if the " + "customer resides in UK then the VAT " + "treatment is uk. If the " + "vendor is in an EU country & VAT " + "registered, you are resides in " + "Northen Ireland and purchasing Goods " + "then his VAT treatment is " + "eu_vat_registeredand if " + "he resides outside the EU then his " + "VAT treatment is " + "overseas(For Pre " + "Brexit, this can be split as " + "eu_vat_registered, " + "eu_vat_not_registered " + "and non_eu).", + "type": "string", + "x-node_available_in": ["uk"], + "x-node_unavailable_in": [], + }, + "vendor_credit_number": { + "description": "Mandatory if auto number generation is disabled.", + "example": "DN-00002", + "type": "string", + }, + "vendor_id": { + "description": "Unique identifier for the vendor " + "contact. Retrieve vendor IDs from the " + "Get Contacts API endpoint in the " + "contacts section. This ID links the " + "vendor credit to the specific vendor " + "record.", + "example": "460000000020029", + "type": "string", + }, + }, + "required": ["vendor_id"], + "type": "object", + }, + "APPLYVENDORCREDITTOBILL_REQUEST_BODY_SCHEMA": { + "properties": { + "bills": { + "description": "Amount applied from vendor credits to specified bills.", + "items": { + "properties": { + "amount_applied": { + "description": "Amount applied to the bill.", + "example": 10, + "format": "double", + "type": "number", + }, + "bill_id": { + "description": "Bill Associated with the Vendor Credit", + "example": "460000000057075", + "type": "string", + }, + }, + "required": ["bill_id", "amount_applied"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["bills"], + "type": "object", + }, + "REFUNDVENDORCREDIT_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "Unique identifier for the chart of " + "accounts entry. Retrieve account IDs " + "from the List Chart of Accounts API " + "endpoint. Determines which account the " + "line item affects for accounting " + "purposes.", + "example": "460000000020097", + "type": "string", + }, + "amount": {"example": 13, "format": "double", "type": "number"}, + "date": { + "description": "Date of Vendor Credit Refund", + "example": "2014-08-30", + "type": "string", + }, + "description": { + "description": "Detailed description of the line item. " + "Provides additional information about " + "the product or service being credited. " + "Displayed on the vendor credit " + "document.", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for converting the " + "vendor credit currency to base " + "currency. Required when currency " + "differs from base currency. Retrieve " + "rates from currency exchange rate " + "APIs.", + "example": 1, + "format": "double", + "type": "number", + }, + "reference_number": { + "description": "Optional reference number for " + "tracking purposes. Can be any " + "custom string or auto-generated. " + "Useful for linking to external " + "systems or internal tracking. " + "Max-Length [100]", + "type": "string", + }, + "refund_mode": {"description": "Mode of Refund", "example": "cash", "type": "string"}, + }, + "required": ["date", "amount", "account_id"], + "type": "object", + }, + "UPDATEVENDORCREDITREFUND_REQUEST_BODY_SCHEMA": { + "properties": { + "account_id": { + "description": "Unique identifier for the chart of " + "accounts entry. Retrieve account IDs " + "from the List Chart of Accounts API " + "endpoint. Determines which account the " + "line item affects for accounting " + "purposes.", + "example": "460000000020097", + "type": "string", + }, + "amount": {"example": 13, "format": "double", "type": "number"}, + "date": { + "description": "The date on which the vendor credit is " + "created. Must be in yyyy-mm-dd format. This " + "date determines the accounting period and " + "affects tax calculations.", + "example": "2014-08-28", + "type": "string", + }, + "description": { + "description": "Detailed description of the line item. " + "Provides additional information about " + "the product or service being credited. " + "Displayed on the vendor credit " + "document.", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate for converting the " + "vendor credit currency to base " + "currency. Required when currency " + "differs from base currency. Retrieve " + "rates from currency exchange rate " + "APIs.", + "example": 1, + "format": "double", + "type": "number", + }, + "reference_number": { + "description": "Optional reference number for " + "tracking purposes. Can be any " + "custom string or auto-generated. " + "Useful for linking to external " + "systems or internal tracking. " + "Max-Length [100]", + "type": "string", + }, + "refund_mode": {"description": "Mode of Refund", "example": "cash", "type": "string"}, + }, + "required": ["date", "amount", "account_id"], + "type": "object", + }, + "ADDVENDORCREDITCOMMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "description": { + "description": "Description of the Comment", + "example": "Credits applied to Bill 1", + "type": "string", + } + }, + "required": ["description"], + "type": "object", + }, + "CREATEVENDORPAYMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Total Amount of Vendor Payment", + "example": 500, + "format": "double", + "type": "number", + }, + "bills": { + "description": "Individual bill payment details as array.", + "items": { + "properties": { + "amount_applied": { + "description": "Amount applied to the bill.", + "example": 150, + "format": "double", + "type": "number", + }, + "bill_id": { + "description": "ID of the bill the payment is to be applied.", + "example": "460000000053199", + "type": "string", + }, + "bill_payment_id": { + "description": "ID of the Bill Payment", + "example": "460000000053221", + "type": "string", + }, + "tax_amount_withheld": { + "description": "Tax Amount Withheld during Bill Payment", + "format": "double", + "type": "number", + "x-node_available_in": ["global", "in", "au"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "check_details": { + "items": {"type": "string"}, + "type": "array", + "x-node_available_in": ["us", "ca"], + "x-node_unavailable_in": [], + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the Custom Field", "type": "integer"}, + "value": {"description": "Value for the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "Date the payment is made.", + "example": "2013-10-07", + "type": "string", + }, + "description": { + "description": "Description for the Vendor Payment recorded.", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate of the currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "is_paid_via_print_check": { + "description": "Check if the Bill Payment is paid Via Print Check Option", + "example": False, + "type": "boolean", + "x-node_available_in": ["us", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "paid_through_account_id": { + "description": "ID of the cash/ bank account from which the payment is made.", + "example": "460000000000358", + "type": "string", + }, + "payment_mode": { + "description": "Mode of Vendor Payment", + "example": "Stripe", + "type": "string", + }, + "reference_number": { + "description": "Reference number for the Vendor Payment recorded.", + "example": "REF#912300", + "type": "string", + }, + "vendor_id": { + "description": "ID of the vendor associated with the Vendor Payment.", + "example": "460000000026049", + "type": "string", + }, + }, + "required": ["amount"], + "type": "object", + }, + "UPDATEVENDORPAYMENTWITHCUSTOMID_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Total Amount of Vendor Payment", + "example": 500, + "format": "double", + "type": "number", + }, + "bills": { + "description": "Individual bill payment details as array.", + "items": { + "properties": { + "amount_applied": { + "description": "Amount applied to the bill.", + "example": 150, + "format": "double", + "type": "number", + }, + "bill_id": { + "description": "ID of the bill the payment is to be applied.", + "example": "460000000053199", + "type": "string", + }, + "bill_payment_id": { + "description": "ID of the Bill Payment", + "example": "460000000053221", + "type": "string", + }, + "tax_amount_withheld": { + "description": "Tax Amount Withheld during Bill Payment", + "format": "double", + "type": "number", + "x-node_available_in": ["global", "in", "au"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "check_details": { + "items": {"type": "string"}, + "type": "array", + "x-node_available_in": ["us", "ca"], + "x-node_unavailable_in": [], + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the Custom Field", "type": "integer"}, + "value": {"description": "Value for the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "Date the payment is made.", + "example": "2013-10-07", + "type": "string", + }, + "description": { + "description": "Description for the Vendor Payment recorded.", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate of the currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "is_paid_via_print_check": { + "description": "Check if the Bill Payment is paid Via Print Check Option", + "example": False, + "type": "boolean", + "x-node_available_in": ["us", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "paid_through_account_id": { + "description": "ID of the cash/ bank account from which the payment is made.", + "example": "460000000000358", + "type": "string", + }, + "payment_mode": { + "description": "Mode of Vendor Payment", + "example": "Stripe", + "type": "string", + }, + "reference_number": { + "description": "Reference number for the Vendor Payment recorded.", + "example": "REF#912300", + "type": "string", + }, + "vendor_id": { + "description": "ID of the vendor associated with the Vendor Payment.", + "example": "460000000026049", + "type": "string", + }, + }, + "required": ["amount"], + "type": "object", + }, + "UPDATEVENDORPAYMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Total Amount of Vendor Payment", + "example": 500, + "format": "double", + "type": "number", + }, + "bills": { + "description": "Individual bill payment details as array.", + "items": { + "properties": { + "amount_applied": { + "description": "Amount applied to the bill.", + "example": 150, + "format": "double", + "type": "number", + }, + "bill_id": { + "description": "ID of the bill the payment is to be applied.", + "example": "460000000053199", + "type": "string", + }, + "bill_payment_id": { + "description": "ID of the Bill Payment", + "example": "460000000053221", + "type": "string", + }, + "tax_amount_withheld": { + "description": "Tax Amount Withheld during Bill Payment", + "format": "double", + "type": "number", + "x-node_available_in": ["global", "in", "au"], + "x-node_unavailable_in": [], + }, + }, + "type": "object", + }, + "type": "array", + }, + "check_details": { + "items": {"type": "string"}, + "type": "array", + "x-node_available_in": ["us", "ca"], + "x-node_unavailable_in": [], + }, + "custom_fields": { + "items": { + "properties": { + "index": {"description": "Index of the Custom Field", "type": "integer"}, + "value": {"description": "Value for the Custom Field", "type": "string"}, + }, + "type": "object", + }, + "type": "array", + }, + "date": { + "description": "Date the payment is made.", + "example": "2013-10-07", + "type": "string", + }, + "description": { + "description": "Description for the Vendor Payment recorded.", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate of the currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "is_paid_via_print_check": { + "description": "Check if the Bill Payment is paid Via Print Check Option", + "example": False, + "type": "boolean", + "x-node_available_in": ["us", "ca", "mx"], + "x-node_unavailable_in": [], + }, + "location_id": { + "description": "Location ID", + "example": "460000000038080", + "type": "string", + }, + "paid_through_account_id": { + "description": "ID of the cash/ bank account from which the payment is made.", + "example": "460000000000358", + "type": "string", + }, + "payment_mode": { + "description": "Mode of Vendor Payment", + "example": "Stripe", + "type": "string", + }, + "reference_number": { + "description": "Reference number for the Vendor Payment recorded.", + "example": "REF#912300", + "type": "string", + }, + "vendor_id": { + "description": "ID of the vendor associated with the Vendor Payment.", + "example": "460000000026049", + "type": "string", + }, + }, + "required": ["amount"], + "type": "object", + }, + "REFUNDVENDOROVERPAYMENT_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Total Amount of Vendor Payment", + "example": 500, + "format": "double", + "type": "number", + }, + "date": { + "description": "Date of the Vendor Payment Refund.", + "example": "2017-01-10", + "type": "string", + }, + "description": { + "description": "Description of the Payment Refund", + "example": "Payment Refund", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate of the currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "reference_number": { + "description": "Reference Number of the Payment Refund", + "type": "string", + }, + "refund_mode": { + "description": "Mode in which refund is made.", + "example": "cash", + "type": "string", + }, + "to_account_id": { + "description": "The account to which payment is refunded.", + "example": "460000000000385", + "type": "string", + }, + }, + "required": ["date", "amount", "to_account_id"], + "type": "object", + }, + "UPDATEVENDORPAYMENTREFUND_REQUEST_BODY_SCHEMA": { + "properties": { + "amount": { + "description": "Total Amount of Vendor Payment", + "example": 500, + "format": "double", + "type": "number", + }, + "date": { + "description": "Date of the Vendor Payment Refund.", + "example": "2017-01-10", + "type": "string", + }, + "description": { + "description": "Description of the Payment Refund", + "example": "Payment Refund", + "type": "string", + }, + "exchange_rate": { + "description": "Exchange rate of the currency.", + "example": 1, + "format": "double", + "type": "number", + }, + "reference_number": { + "description": "Reference Number of the Payment Refund", + "type": "string", + }, + "refund_mode": { + "description": "Mode in which refund is made.", + "example": "cash", + "type": "string", + }, + "to_account_id": { + "description": "The account to which payment is refunded.", + "example": "460000000000385", + "type": "string", + }, + }, + "required": ["date", "amount", "to_account_id"], + "type": "object", + }, + "SENDVENDORPAYMENTEMAIL_REQUEST_BODY_SCHEMA": { + "properties": { + "body": { + "description": "Body of the email", + "example": "Dear Vendor,

Thank you for your " + "services.

Please find attached the payment " + "receipt for Payment#: VP-00001.

Payment " + "Details:
Payment Number: VP-00001
Date: " + "2024-01-15
Amount: $1,500.00

Best " + "regards,
Your Company", + "type": "string", + }, + "cc_mail_ids": { + "description": "Array of email address of the recipients to be CC'd.", + "example": ["manager@example.com"], + "items": {"type": "string"}, + "type": "array", + }, + "email_template_id": { + "description": "Get the email content based on a " + "specific email template. If this " + "param is not inputted, then the " + "content will be based on the " + "email template associated with " + "the vendor. If no template is " + "associated with the vendor, then " + "default template will be used.", + "type": "string", + }, + "from_address_id": { + "description": "From email address id", + "example": "2000000011993", + "type": "string", + }, + "send_from_org_email_id": { + "description": "Boolean to trigger the email from the organization's email address", + "example": False, + "type": "boolean", + }, + "subject": { + "description": "Subject of the email", + "example": "Vendor Payment Receipt from Your Company (Payment#: VP-00001)", + "type": "string", + }, + "to_mail_ids": { + "description": "Array of email address of the recipients.", + "example": ["vendor@example.com"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["to_mail_ids", "subject", "body"], + "type": "object", + }, +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AcceptEstimate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AcceptEstimate.json new file mode 100644 index 00000000..80576fad --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AcceptEstimate.json @@ -0,0 +1,154 @@ +{ + "name": "AcceptEstimate", + "fully_qualified_name": "ZohoBooksApi.AcceptEstimate@0.1.0", + "description": "Mark a sent estimate as accepted if the customer has accepted it.\n\nUse this tool to update the status of a sent estimate to accepted once your customer has approved it.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID for the organization related to the estimate acceptance.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier of the estimate to be marked as accepted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_estimate_accepted'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/status/accepted", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ActivateBankAccount.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateBankAccount.json new file mode 100644 index 00000000..25b532f3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateBankAccount.json @@ -0,0 +1,154 @@ +{ + "name": "ActivateBankAccount", + "fully_qualified_name": "ZohoBooksApi.ActivateBankAccount@0.1.0", + "description": "Activate a bank account in Zoho Books.\n\nThis tool is used to mark a bank account as active in Zoho Books. It should be called when there is a need to change the status of a bank account to active.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. This ID is required to activate a bank account within the specified organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_id", + "required": true, + "description": "Unique identifier of the bank account to be activated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_bank_account_active'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/{account_id}/active", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "bank_account_id", + "description": "Unique identifier of the bank account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ActivateChartOfAccount.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateChartOfAccount.json new file mode 100644 index 00000000..a5dfeaaf --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateChartOfAccount.json @@ -0,0 +1,154 @@ +{ + "name": "ActivateChartOfAccount", + "fully_qualified_name": "ZohoBooksApi.ActivateChartOfAccount@0.1.0", + "description": "Activate a chart of account in Zoho Books.\n\nUse this tool to update the status of a chart of account to active in Zoho Books. This is useful when you need to ensure an account is reactivated and available for transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books that needs the account to be activated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_unique_identifier", + "required": true, + "description": "Unique identifier of the account to be activated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_chart_of_account_active'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/chartofaccounts/{account_id}/active", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_unique_identifier", + "description": "Unique identifier of the account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ActivateContact.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateContact.json new file mode 100644 index 00000000..1c6318e9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateContact.json @@ -0,0 +1,154 @@ +{ + "name": "ActivateContact", + "fully_qualified_name": "ZohoBooksApi.ActivateContact@0.1.0", + "description": "Activate a contact in Zoho Books.\n\nUse this tool to mark a contact as active in Zoho Books. It should be called when a contact's status needs to be changed from inactive to active.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to which the contact belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_identifier", + "required": true, + "description": "Unique identifier of the contact to be marked as active.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_contact_active'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/active", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ActivateFixedAsset.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateFixedAsset.json new file mode 100644 index 00000000..1352c4b8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateFixedAsset.json @@ -0,0 +1,154 @@ +{ + "name": "ActivateFixedAsset", + "fully_qualified_name": "ZohoBooksApi.ActivateFixedAsset@0.1.0", + "description": "Activate a fixed asset to begin depreciation calculation.\n\nUse this tool to mark a fixed asset as active, which will initiate the calculation of its depreciation.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization. This is required to identify which organization's asset to activate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_id", + "required": true, + "description": "Unique identifier of the fixed asset to activate for depreciation calculation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_fixed_asset_active'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/status/active", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_id", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ActivateInactiveItem.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateInactiveItem.json new file mode 100644 index 00000000..4cb77884 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateInactiveItem.json @@ -0,0 +1,154 @@ +{ + "name": "ActivateInactiveItem", + "fully_qualified_name": "ZohoBooksApi.ActivateInactiveItem@0.1.0", + "description": "Activate an inactive item in Zoho Books.\n\nUse this tool to reactivate an item that has been previously marked as inactive in Zoho Books. It should be called when you need to make an item available again for transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for your organization in Zoho Books. Required to activate an item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "item_identifier", + "required": true, + "description": "Unique identifier of the item to be activated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_item_active'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/items/{item_id}/active", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "item_identifier", + "description": "Unique identifier of the item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ActivateInactiveUser.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateInactiveUser.json new file mode 100644 index 00000000..862095d5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateInactiveUser.json @@ -0,0 +1,154 @@ +{ + "name": "ActivateInactiveUser", + "fully_qualified_name": "ZohoBooksApi.ActivateInactiveUser@0.1.0", + "description": "Mark an inactive user as active.\n\nUse this tool to activate a user who is currently marked as inactive in the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the user will be reactivated. Ensure it matches the organization's records.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "user_identifier", + "required": true, + "description": "Unique identifier for the user to be activated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_user_active'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/users/{user_id}/active", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "Unique identifier of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ActivateInvoiceReminder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateInvoiceReminder.json new file mode 100644 index 00000000..9c5a7b3a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateInvoiceReminder.json @@ -0,0 +1,154 @@ +{ + "name": "ActivateInvoiceReminder", + "fully_qualified_name": "ZohoBooksApi.ActivateInvoiceReminder@0.1.0", + "description": "Enable automated payment reminders for invoices.\n\nActivate automatic reminders for invoice payments to ensure timely settlements.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the invoice payment reminder is being activated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice for which payment reminders are to be activated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'enable_invoice_payment_reminder'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/paymentreminder/enable", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ActivateLocation.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateLocation.json new file mode 100644 index 00000000..af5b1f23 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateLocation.json @@ -0,0 +1,154 @@ +{ + "name": "ActivateLocation", + "fully_qualified_name": "ZohoBooksApi.ActivateLocation@0.1.0", + "description": "Marks a location as active.\n\nUse this tool to mark a specified location as active in the system. This is useful for enabling locations that were previously inactive.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to which the location belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "location_identifier", + "required": true, + "description": "Unique identifier for the location to be marked as active.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "inferrable": true, + "http_endpoint_parameter_name": "location_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_location_active'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/locations/{location_id}/active", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "location_id", + "tool_parameter_name": "location_identifier", + "description": "Unique identifier of the location.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ActivateProject.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateProject.json new file mode 100644 index 00000000..713f1b45 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ActivateProject.json @@ -0,0 +1,154 @@ +{ + "name": "ActivateProject", + "fully_qualified_name": "ZohoBooksApi.ActivateProject@0.1.0", + "description": "Activate a project in Zoho Books.\n\nThis tool marks a specified project as active in Zoho Books. Call this tool when you need to change the status of a project to active to enable its functionalities or integrations.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in which the project is to be activated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "Unique identifier for the project to activate in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_project_active'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/active", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/AddCommentToBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddCommentToBill.json new file mode 100644 index 00000000..9f9aab76 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddCommentToBill.json @@ -0,0 +1,205 @@ +{ + "name": "AddCommentToBill", + "fully_qualified_name": "ZohoBooksApi.AddCommentToBill@0.1.0", + "description": "Add a comment to a specific bill in Zoho Books.\n\nUse this tool to add a comment to a bill identified by its ID in Zoho Books. Useful for internal notes or communication about a bill.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. Required to specify which organization's bill to comment on.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier for the bill to add a comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "bill_comment", + "required": false, + "description": "The comment content to add to the specified bill. It should provide context or details related to the bill for internal documentation or communication.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_bill_comment'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bill_comment", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions." + } + }, + "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 \"required\": [\n \"description\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddContactAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddContactAddress.json new file mode 100644 index 00000000..5ae5afe8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddContactAddress.json @@ -0,0 +1,333 @@ +{ + "name": "AddContactAddress", + "fully_qualified_name": "ZohoBooksApi.AddContactAddress@0.1.0", + "description": "Add an additional address to a contact in Zoho Books.\n\nUse this tool to append a new address to an existing contact in Zoho Books. Suitable when updating contact details with more location information.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the contact address will be added. This is required to specify the target organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_id", + "required": true, + "description": "The unique identifier for the contact to which an address will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "contact_address_details", + "required": false, + "description": "Provide address details as JSON, including fields like 'attention', 'address', 'street2', 'city', 'state', 'zip', 'country', 'fax', and 'phone'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_contact_address'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/address", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_id", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "contact_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "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 \"attention\": {\n \"description\": \"Attention for proper delivery and routing of business correspondence. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Mr.John\"\n },\n \"address\": {\n \"description\": \"Street 1 address for the contact. Max-length [500].\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd\"\n },\n \"street2\": {\n \"description\": \"Street 2 address for the contact. Max-length [255].\",\n \"type\": \"string\",\n \"example\": \"Suite 310\"\n },\n \"city\": {\n \"description\": \"City name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Postal or ZIP code for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Fax number for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n },\n \"phone\": {\n \"description\": \"The contact phone number associated with the address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddCreditNoteComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddCreditNoteComment.json new file mode 100644 index 00000000..42acc3da --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddCreditNoteComment.json @@ -0,0 +1,205 @@ +{ + "name": "AddCreditNoteComment", + "fully_qualified_name": "ZohoBooksApi.AddCreditNoteComment@0.1.0", + "description": "Add a comment to an existing credit note.\n\nUse this tool to append a comment to a specific credit note by providing the credit note's ID and the comment text. Ideal for documenting additional information or context on credit notes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The string ID of the organization to which the credit note belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to which the comment will be added. This is required to specify the exact credit note targeted for the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "credit_note_comment", + "required": false, + "description": "JSON object containing a description key with the comment text for the credit note.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A small description about the item." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_credit_note_comment'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "credit_note_comment", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A small description about the item." + } + }, + "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 \"description\": {\n \"description\": \"A small description about the item.\",\n \"type\": \"string\",\n \"example\": \"Credits applied to invoice INV-00004\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddEstimateComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddEstimateComment.json new file mode 100644 index 00000000..b8f7f676 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddEstimateComment.json @@ -0,0 +1,221 @@ +{ + "name": "AddEstimateComment", + "fully_qualified_name": "ZohoBooksApi.AddEstimateComment@0.1.0", + "description": "Add a comment for a specific estimate in Zoho Books.\n\nUse this tool to add a comment to an existing estimate in Zoho Books. Call it when you need to append notes or feedback to an estimate record.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization within Zoho Books. It is required to specify which organization's estimate is being commented on.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier for the specific estimate to comment on.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "estimate_comment_details", + "required": false, + "description": "JSON object containing the comment description and visibility settings. Include \"description\" and \"show_comment_to_clients\" keys.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the line items" + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to show the comments to contacts in portal." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_estimate_comment'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "estimate_comment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the line items" + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to show the comments to contacts in portal." + } + }, + "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 \"description\": {\n \"description\": \"The description of the line items\",\n \"type\": \"string\",\n \"example\": \"Estimate marked as sent\"\n },\n \"show_comment_to_clients\": {\n \"description\": \"Boolean to show the comments to contacts in portal.\",\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddFixedAssetComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddFixedAssetComment.json new file mode 100644 index 00000000..03543f26 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddFixedAssetComment.json @@ -0,0 +1,205 @@ +{ + "name": "AddFixedAssetComment", + "fully_qualified_name": "ZohoBooksApi.AddFixedAssetComment@0.1.0", + "description": "Add a comment to a fixed asset in Zoho Books.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. This is required to add a comment to the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier for the fixed asset to add a comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + }, + { + "name": "comment_description", + "required": false, + "description": "The text of the comment to be added to the fixed asset. It should provide a description or note relevant to the asset.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "It displays the description of the comment added for the fixed asset" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_fixed_asset_comment'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "comment_description", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "It displays the description of the comment added for the fixed asset" + } + }, + "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 \"description\": {\n \"type\": \"string\",\n \"description\": \"It displays the description of the comment added for the fixed asset\",\n \"example\": \"Fixed asset is in good condition\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddInvoiceComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddInvoiceComment.json new file mode 100644 index 00000000..c341b3ae --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddInvoiceComment.json @@ -0,0 +1,237 @@ +{ + "name": "AddInvoiceComment", + "fully_qualified_name": "ZohoBooksApi.AddInvoiceComment@0.1.0", + "description": "Add a comment to a specific invoice.\n\nUse this tool to add a comment to an invoice by specifying the invoice ID. Useful for internal notes or communication related to invoice handling.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the invoice belongs. It must be a valid and existing organization ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to add a comment to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "invoice_comment_details", + "required": false, + "description": "JSON object containing the comment description, expected payment date, and visibility to clients. Example: {\"description\": \"Discussed payment details\", \"payment_expected_date\": \"2023-12-15\", \"show_comment_to_clients\": true}.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + }, + "payment_expected_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected date of payment" + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to check if the comment to be shown to the clients" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_invoice_comment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_comment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + }, + "payment_expected_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected date of payment" + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to check if the comment to be shown to the clients" + } + }, + "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 \"description\": {\n \"description\": \"The description of the comment.\",\n \"type\": \"string\",\n \"example\": \"This is a comment.\"\n },\n \"payment_expected_date\": {\n \"description\": \"The expected date of payment\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"show_comment_to_clients\": {\n \"description\": \"Boolean to check if the comment to be shown to the clients\",\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddJournalComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddJournalComment.json new file mode 100644 index 00000000..e91bbb1d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddJournalComment.json @@ -0,0 +1,205 @@ +{ + "name": "AddJournalComment", + "fully_qualified_name": "ZohoBooksApi.AddJournalComment@0.1.0", + "description": "Add a comment to a journal entry in Zoho Books.\n\nThis tool adds a comment to a specified journal entry in Zoho Books. Call this tool when you need to annotate or provide additional information for a journal entry.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books where the comment is to be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "journal_unique_id", + "required": true, + "description": "The unique identifier for the journal entry to which the comment will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "journal_id" + }, + { + "name": "comment_description", + "required": false, + "description": "The content of the comment to add to the journal. Provide detailed text for clarity.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of a comment" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_journal_comment'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/journals/{journal_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "journal_id", + "tool_parameter_name": "journal_unique_id", + "description": "Unique identifier of the journal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "comment_description", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of a comment" + } + }, + "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 \"description\": {\n \"description\": \"Description of a comment\",\n \"type\": \"string\",\n \"example\": \"Journal Created\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddProjectTask.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddProjectTask.json new file mode 100644 index 00000000..dc2f0f3f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddProjectTask.json @@ -0,0 +1,253 @@ +{ + "name": "AddProjectTask", + "fully_qualified_name": "ZohoBooksApi.AddProjectTask@0.1.0", + "description": "Add a task to a specific project.\n\nUse this tool to add a task to a specified project in Zoho Books. It is suitable when you need to organize tasks within a project and track them through Zoho's project management system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization for which the task is being added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "Unique identifier of the project in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "project_task_details", + "required": false, + "description": "JSON object with task information: 'task_name' (string, max 100 chars), 'description' (string), 'rate' (integer), and 'budget_hours' (integer).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the project." + }, + "rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_task'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/tasks", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "project_task_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the project." + }, + "rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours." + } + }, + "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 \"required\": [\n \"task_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"task_name\": {\n \"description\": \"The name of the task. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Painting\"\n },\n \"description\": {\n \"description\": \"The description of the project.\",\n \"type\": \"string\",\n \"example\": \"\"\n },\n \"rate\": {\n \"description\": \"Hourly rate for a task.\",\n \"type\": \"integer\",\n \"example\": 3\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours.\",\n \"type\": \"integer\",\n \"example\": \"\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddPurchaseOrderComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddPurchaseOrderComment.json new file mode 100644 index 00000000..0466e286 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddPurchaseOrderComment.json @@ -0,0 +1,221 @@ +{ + "name": "AddPurchaseOrderComment", + "fully_qualified_name": "ZohoBooksApi.AddPurchaseOrderComment@0.1.0", + "description": "Add a comment to a purchase order in Zoho Books.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This ID is required to specify which organization's purchase order is being commented on.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_identifier", + "required": true, + "description": "Unique identifier for the purchase order in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "purchase_order_comment_details", + "required": false, + "description": "JSON object containing the comment description and expected delivery date (YYYY-MM-DD) for the purchase order.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + }, + "expected_delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_purchase_order_comment'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_identifier", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "purchase_order_comment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + }, + "expected_delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + } + }, + "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 \"required\": [\n \"description\",\n \"expected_delivery_date\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"The description of the comment.\",\n \"type\": \"string\",\n \"example\": \"This is a comment.\"\n },\n \"expected_delivery_date\": {\n \"description\": \"The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddRetainerInvoiceComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddRetainerInvoiceComment.json new file mode 100644 index 00000000..74806a10 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddRetainerInvoiceComment.json @@ -0,0 +1,237 @@ +{ + "name": "AddRetainerInvoiceComment", + "fully_qualified_name": "ZohoBooksApi.AddRetainerInvoiceComment@0.1.0", + "description": "Add a comment to a specific retainer invoice.\n\nThis tool is used to add a comment to a specified retainer invoice in Zoho Books. It should be called when a user wishes to provide additional information or notes related to an existing retainer invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique ID string of the organization in Zoho Books to add a comment to a retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "A unique identifier for the retainer invoice you want to comment on.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + }, + { + "name": "comment_details", + "required": false, + "description": "JSON object containing the comment description, expected payment date, and visibility to clients.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment. Max-length [2000]" + }, + "payment_expected_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to check if the comment to be shown to the clients" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_retainer_invoice_comment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "comment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment. Max-length [2000]" + }, + "payment_expected_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to check if the comment to be shown to the clients" + } + }, + "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 \"description\": {\n \"description\": \"The description of the comment. Max-length [2000]\",\n \"type\": \"string\",\n \"example\": \"comment added\"\n },\n \"payment_expected_date\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"show_comment_to_clients\": {\n \"description\": \"Boolean to check if the comment to be shown to the clients\",\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddSalesOrderComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddSalesOrderComment.json new file mode 100644 index 00000000..7c71b2c1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddSalesOrderComment.json @@ -0,0 +1,205 @@ +{ + "name": "AddSalesOrderComment", + "fully_qualified_name": "ZohoBooksApi.AddSalesOrderComment@0.1.0", + "description": "Add a comment to a sales order in Zoho Books.\n\nThis tool is used to add a comment to a specific sales order in Zoho Books. It should be called when you need to leave additional remarks or notes on a sales order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to which the comment will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "comment_description", + "required": false, + "description": "The content of the comment to be added to the sales order.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_sales_order_comment'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "comment_description", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + } + }, + "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 \"description\": {\n \"description\": \"The description of the comment.\",\n \"type\": \"string\",\n \"example\": \"This is a comment.\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddVendorCreditComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddVendorCreditComment.json new file mode 100644 index 00000000..a978ec9b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AddVendorCreditComment.json @@ -0,0 +1,205 @@ +{ + "name": "AddVendorCreditComment", + "fully_qualified_name": "ZohoBooksApi.AddVendorCreditComment@0.1.0", + "description": "Add a comment to an existing vendor credit.\n\nUse this tool to add a comment to a vendor credit in Zoho Books. It should be called when you need to attach notes or additional information to a vendor credit entry.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization the vendor credit belongs to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier for the vendor credit to which the comment will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "comment_description", + "required": false, + "description": "A JSON object containing the description of the comment to add to the vendor credit. Must include the 'description' field.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Comment" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_vendor_credit_comment'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "comment_description", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Comment" + } + }, + "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 \"required\": [\n \"description\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"Description of the Comment\",\n \"type\": \"string\",\n \"example\": \"Credits applied to Bill 1\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyCreditNoteToInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyCreditNoteToInvoice.json new file mode 100644 index 00000000..8091d81e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyCreditNoteToInvoice.json @@ -0,0 +1,271 @@ +{ + "name": "ApplyCreditNoteToInvoice", + "fully_qualified_name": "ZohoBooksApi.ApplyCreditNoteToInvoice@0.1.0", + "description": "Apply credit note to existing invoices in Zoho Books.\n\nThis tool applies a credit note to specific existing invoices within the Zoho Books platform. It should be called when you want to manage or adjust invoice balances by using available credit notes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization within Zoho Books to which the credit note is being applied.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to apply to invoices.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "invoices_to_apply_credit_note", + "required": false, + "description": "A JSON array of invoices to apply the credit note to. Each entry must include 'invoice_id' and 'amount_applied'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The total amount applied form the credit note on an invoice." + } + }, + "description": "List of invoices for which the credit note has been raised. This contains invoice_id and amount." + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The total amount applied form the credit note on an invoice." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'apply_credit_note_to_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/invoices", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoices_to_apply_credit_note", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The total amount applied form the credit note on an invoice." + } + }, + "description": "List of invoices for which the credit note has been raised. This contains invoice_id and amount." + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The total amount applied form the credit note on an invoice." + } + }, + "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 \"required\": [\n \"invoice_id\",\n \"amount_applied\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"invoices\": {\n \"description\": \"List of invoices for which the credit note has been raised. This contains invoice_id and amount.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"invoice_id\": {\n \"description\": \"Invoice ID of the required invoice.\",\n \"type\": \"string\",\n \"example\": \"90300000079426\"\n },\n \"amount_applied\": {\n \"description\": \"The total amount applied form the credit note on an invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 41.82\n }\n }\n }\n },\n \"invoice_id\": {\n \"description\": \"Invoice ID of the required invoice.\",\n \"type\": \"string\",\n \"example\": \"90300000079426\"\n },\n \"amount_applied\": {\n \"description\": \"The total amount applied form the credit note on an invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 41.82\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyCreditsToInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyCreditsToInvoice.json new file mode 100644 index 00000000..a7c429f3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyCreditsToInvoice.json @@ -0,0 +1,289 @@ +{ + "name": "ApplyCreditsToInvoice", + "fully_qualified_name": "ZohoBooksApi.ApplyCreditsToInvoice@0.1.0", + "description": "Apply customer credits to an invoice.\n\nThis tool applies customer credits, from credit notes or excess payments, to a specified invoice. It can apply multiple credits at once.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to identify where credits are applied.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_unique_identifier", + "required": true, + "description": "Unique identifier of the invoice to which credits will be applied.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "credits_application_details", + "required": false, + "description": "JSON object detailing the credits to be applied, including invoice payments and credit notes. Each entry should specify the applicable ID and amount.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_payments": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the payment" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The applied amount to the creditnote" + } + }, + "description": null + }, + "apply_creditnotes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "creditnote_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the creditnote" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The applied amount to the creditnote" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'apply_credits_to_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/credits", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_unique_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "credits_application_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_payments": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the payment" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The applied amount to the creditnote" + } + }, + "description": null + }, + "apply_creditnotes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "creditnote_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the creditnote" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The applied amount to the creditnote" + } + }, + "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 \"required\": [\n \"invoice_payments\",\n \"apply_creditnotes\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"invoice_payments\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"payment_id\": {\n \"description\": \"ID of the payment\",\n \"type\": \"string\",\n \"example\": 982000000567190\n },\n \"amount_applied\": {\n \"description\": \"The applied amount to the creditnote\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 12.2\n }\n }\n }\n },\n \"apply_creditnotes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"creditnote_id\": {\n \"description\": \"ID of the creditnote\",\n \"type\": \"string\",\n \"example\": 982000000567134\n },\n \"amount_applied\": {\n \"description\": \"The applied amount to the creditnote\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 12.2\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyVendorCreditToBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyVendorCreditToBill.json new file mode 100644 index 00000000..c807316e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyVendorCreditToBill.json @@ -0,0 +1,239 @@ +{ + "name": "ApplyVendorCreditToBill", + "fully_qualified_name": "ZohoBooksApi.ApplyVendorCreditToBill@0.1.0", + "description": "Apply vendor credit to an existing bill in Zoho Books.\n\nUse this tool to apply a specific vendor credit to existing bills. It helps manage and track accounts payable by adjusting bills with vendor credits.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization where the vendor credit will be applied. Required for identification within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier for the vendor credit to be applied to a bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "vendor_credit_bill_details", + "required": false, + "description": "JSON object detailing the bills and amounts to which vendor credits are applied. Each entry should include the 'bill_id' and 'amount_applied'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bill Associated with the Vendor Credit" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + } + }, + "description": "Amount applied from vendor credits to specified bills." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'apply_credits_to_a_bill'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/bills", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "vendor_credit_bill_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bill Associated with the Vendor Credit" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + } + }, + "description": "Amount applied from vendor credits to specified bills." + } + }, + "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 \"required\": [\n \"bills\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"bills\": {\n \"description\": \"Amount applied from vendor credits to specified bills.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"bill_id\",\n \"amount_applied\"\n ],\n \"properties\": {\n \"bill_id\": {\n \"description\": \"Bill Associated with the Vendor Credit\",\n \"type\": \"string\",\n \"example\": \"460000000057075\"\n },\n \"amount_applied\": {\n \"description\": \"Amount applied to the bill.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyVendorCreditsToBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyVendorCreditsToBill.json new file mode 100644 index 00000000..05df5f6e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApplyVendorCreditsToBill.json @@ -0,0 +1,289 @@ +{ + "name": "ApplyVendorCreditsToBill", + "fully_qualified_name": "ZohoBooksApi.ApplyVendorCreditsToBill@0.1.0", + "description": "Apply vendor credits to a bill.\n\nThis tool applies vendor credits from excess payments to a specified bill. It is useful for managing accounts and applying multiple credits at once.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization where credits are being applied.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier for the bill to apply credits to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "vendor_credit_application_details", + "required": false, + "description": "Details of the vendor credits and bill payments to apply, including IDs and amounts.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bill_payments": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Payment" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + } + }, + "description": null + }, + "apply_vendor_credits": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "vendor_credit_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Vendor Credit" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'apply_credits_to_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/credits", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "vendor_credit_application_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bill_payments": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Payment" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + } + }, + "description": null + }, + "apply_vendor_credits": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "vendor_credit_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Vendor Credit" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + } + }, + "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 \"bill_payments\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"payment_id\": {\n \"description\": \"ID of the Payment\",\n \"type\": \"string\",\n \"example\": \"460000000042059\"\n },\n \"amount_applied\": {\n \"description\": \"Amount applied to the bill.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 31.25\n }\n }\n }\n },\n \"apply_vendor_credits\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"vendor_credit_id\": {\n \"description\": \"ID of the Vendor Credit\",\n \"type\": \"string\",\n \"example\": \"4600000053221\"\n },\n \"amount_applied\": {\n \"description\": \"Amount applied to the bill.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 31.25\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveBill.json new file mode 100644 index 00000000..e0a833c8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveBill.json @@ -0,0 +1,154 @@ +{ + "name": "ApproveBill", + "fully_qualified_name": "ZohoBooksApi.ApproveBill@0.1.0", + "description": "Approve a bill in Zoho Books.\n\nThis tool approves a specified bill in Zoho Books. It should be used when you need to change the status of a bill to approved.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization for which the bill needs approval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier of the bill to be approved in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'approve_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/approve", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ApproveCreditNote.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveCreditNote.json new file mode 100644 index 00000000..3a9570af --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveCreditNote.json @@ -0,0 +1,154 @@ +{ + "name": "ApproveCreditNote", + "fully_qualified_name": "ZohoBooksApi.ApproveCreditNote@0.1.0", + "description": "Approve a credit note for a specified ID.\n\nUse this tool to approve a credit note by providing the specific credit note ID. This action confirms the validity and acceptance of the credit note within the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization for which the credit note is being approved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_identifier", + "required": true, + "description": "A unique string identifier for the specific credit note to approve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'approve_credit_note'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/approve", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_identifier", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ApproveEstimate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveEstimate.json new file mode 100644 index 00000000..7c7e28d4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveEstimate.json @@ -0,0 +1,154 @@ +{ + "name": "ApproveEstimate", + "fully_qualified_name": "ZohoBooksApi.ApproveEstimate@0.1.0", + "description": "Approve an estimate in Zoho Books.\n\nUse this tool to approve an estimate in the Zoho Books system when you have the estimate ID. It should be called when an estimate needs to be confirmed as approved.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books whose estimate is being approved. This should be the unique identifier associated with the organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier for the estimate to be approved in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'approve_estimate'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/approve", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ApproveInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveInvoice.json new file mode 100644 index 00000000..b4c5ecdc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveInvoice.json @@ -0,0 +1,154 @@ +{ + "name": "ApproveInvoice", + "fully_qualified_name": "ZohoBooksApi.ApproveInvoice@0.1.0", + "description": "Approve a specified invoice for processing.\n\nThis tool approves a pending invoice given its ID, making it ready for processing. Call this tool when an invoice requires approval to proceed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization for which the invoice is to be approved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to approve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'approve_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/approve", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ApprovePurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApprovePurchaseOrder.json new file mode 100644 index 00000000..b7c57e63 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApprovePurchaseOrder.json @@ -0,0 +1,154 @@ +{ + "name": "ApprovePurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.ApprovePurchaseOrder@0.1.0", + "description": "Approve a purchase order.\n\nThis tool approves a specified purchase order in Zoho Books. It should be called when a purchase order needs to be authorized for further processing.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which to approve the purchase order. This should be a unique string identifier provided by Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_identifier", + "required": true, + "description": "The unique identifier for the purchase order to be approved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'approve_purchase_order'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/approve", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_identifier", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ApproveRetainerInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveRetainerInvoice.json new file mode 100644 index 00000000..d6d625fe --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveRetainerInvoice.json @@ -0,0 +1,154 @@ +{ + "name": "ApproveRetainerInvoice", + "fully_qualified_name": "ZohoBooksApi.ApproveRetainerInvoice@0.1.0", + "description": "Approve a retainer invoice in Zoho Books.\n\nUse this tool to approve a specific retainer invoice in Zoho Books when you have the invoice ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the retainer invoice is being approved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to approve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reatinerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'approve_retainer_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{reatinerinvoice_id}/approve", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reatinerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ApproveSalesOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveSalesOrder.json new file mode 100644 index 00000000..b3038070 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveSalesOrder.json @@ -0,0 +1,154 @@ +{ + "name": "ApproveSalesOrder", + "fully_qualified_name": "ZohoBooksApi.ApproveSalesOrder@0.1.0", + "description": "Approve a specified sales order in Zoho Books.\n\nUse this tool to approve a particular sales order within the Zoho Books system. This is typically called when a sales order needs to be confirmed and finalized.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books required for approving a sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "The unique identifier for the sales order to be approved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'approve_sales_order'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/approve", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ApproveVendorCredit.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveVendorCredit.json new file mode 100644 index 00000000..c4b6080f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ApproveVendorCredit.json @@ -0,0 +1,154 @@ +{ + "name": "ApproveVendorCredit", + "fully_qualified_name": "ZohoBooksApi.ApproveVendorCredit@0.1.0", + "description": "Approve a vendor credit in Zoho Books.\n\nThis tool approves a vendor credit in Zoho Books, marking the credit as accepted for the specified vendor credit ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The ID of the organization in Zoho Books. This uniquely identifies the organization for which the vendor credit approval will be processed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier for the vendor credit to be approved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'approve_vendor_credit'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/approve", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/AssignUsersToProject.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AssignUsersToProject.json new file mode 100644 index 00000000..d9180ddf --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AssignUsersToProject.json @@ -0,0 +1,239 @@ +{ + "name": "AssignUsersToProject", + "fully_qualified_name": "ZohoBooksApi.AssignUsersToProject@0.1.0", + "description": "Assign users to a specific project in Zoho Books.\n\nUse this tool to assign multiple users to a project in Zoho Books when managing project teams or updating project participation.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique ID of the organization in Zoho Books for which users are being assigned to a project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "The unique identifier for the project to which users will be assigned.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "users_assignment_request_body", + "required": false, + "description": "JSON object containing an array of user IDs to add to the project and their respective cost rates. Each user object must have a 'user_id' field.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "users": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + } + }, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_project_user'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/users", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "users_assignment_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "users": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + } + }, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "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 \"required\": [\n \"cost_rate\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"users\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"user_id\"\n ],\n \"properties\": {\n \"user_id\": {\n \"description\": \"ID of the user to be added to the project.\",\n \"type\": \"string\",\n \"example\": \"460000000024003\"\n }\n }\n }\n },\n \"cost_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \"10.00\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AssociateInvoiceWithSalesOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AssociateInvoiceWithSalesOrder.json new file mode 100644 index 00000000..8cbac1fc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AssociateInvoiceWithSalesOrder.json @@ -0,0 +1,172 @@ +{ + "name": "AssociateInvoiceWithSalesOrder", + "fully_qualified_name": "ZohoBooksApi.AssociateInvoiceWithSalesOrder@0.1.0", + "description": "Link existing invoices to sales orders for tracking.\n\nThis tool is used to associate existing invoices with one or more sales orders, enabling better tracking and management of orders and billing.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required for linking invoices with sales orders.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_ids_to_associate", + "required": false, + "description": "An array of invoice IDs to associate with the sales order. Each ID should be a string.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of invoice IDs to be associated with a sales order." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'map_invoice_with_salesorder'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/mapwithorder", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_ids_to_associate", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of invoice IDs to be associated with a sales order." + } + }, + "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 \"required\": [\n \"invoice_ids\"\n ],\n \"properties\": {\n \"invoice_ids\": {\n \"description\": \"Array of invoice IDs to be associated with a sales order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"982000000567114\",\n \"982000000567115\",\n \"982000000567116\"\n ]\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachExpenseReceipt.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachExpenseReceipt.json new file mode 100644 index 00000000..36e53e1e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachExpenseReceipt.json @@ -0,0 +1,187 @@ +{ + "name": "AttachExpenseReceipt", + "fully_qualified_name": "ZohoBooksApi.AttachExpenseReceipt@0.1.0", + "description": "Attach a receipt to a specified expense.\n\nUse this tool to attach a receipt file to an existing expense record, identified by the expense ID. It is helpful when you need to provide proof or documentation for expense entries in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "expense_id", + "required": true, + "description": "Unique identifier for the expense to which the receipt will be attached.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "expense_id" + }, + { + "name": "expense_receipt_file", + "required": false, + "description": "The file to attach as an expense receipt. Supported formats: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expense receipt file to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "inferrable": true, + "http_endpoint_parameter_name": "receipt" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_expense_receipt'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses/{expense_id}/receipt", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "receipt", + "tool_parameter_name": "expense_receipt_file", + "description": "Expense receipt file to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expense receipt file to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expense_id", + "tool_parameter_name": "expense_id", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToBill.json new file mode 100644 index 00000000..254cd683 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToBill.json @@ -0,0 +1,187 @@ +{ + "name": "AttachFileToBill", + "fully_qualified_name": "ZohoBooksApi.AttachFileToBill@0.1.0", + "description": "Attach a file to a specific bill.\n\nUse this tool to attach a file to a specific bill in Zoho Books. It should be called when you need to upload and associate documents, such as receipts or invoices, with a bill.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The ID of the organization in Zoho Books to which the bill belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_id", + "required": true, + "description": "Unique identifier of the bill for which the file will be attached. Use this to specify the target bill in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "file_attachment", + "required": false, + "description": "File to attach to the bill. Accepted formats: gif, png, jpeg, jpg, bmp, pdf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachment" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_bill_attachment'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/attachment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachment", + "tool_parameter_name": "file_attachment", + "description": "File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_id", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToInvoice.json new file mode 100644 index 00000000..ebe258ac --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToInvoice.json @@ -0,0 +1,221 @@ +{ + "name": "AttachFileToInvoice", + "fully_qualified_name": "ZohoBooksApi.AttachFileToInvoice@0.1.0", + "description": "Attach a file to an invoice.\n\nUse this tool to upload and attach a file to a specified retainer invoice. This is useful for adding supporting documents or additional information to invoices.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to which the invoice belongs. Required to specify the correct entity for file attachment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_identifier", + "required": true, + "description": "Unique identifier of the retainer invoice to which the file will be attached.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + }, + { + "name": "file_attachment_details", + "required": false, + "description": "JSON object containing the file to attach ('attachment') and a flag ('can_send_in_mail') indicating if it can be sent via email. The file must be sent as multipart/form-data.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "can_send_in_mail": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "attachment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The file to be attached. It has to be sent in multipart/formdata" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_retainer_invoice_attachment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/attachment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_identifier", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "file_attachment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "can_send_in_mail": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "attachment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The file to be attached. It has to be sent in multipart/formdata" + } + }, + "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 \"can_send_in_mail\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"attachment\": {\n \"description\": \"The file to be attached. It has to be sent in multipart/formdata\",\n \"type\": \"string\",\n \"format\": \"binary\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToJournal.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToJournal.json new file mode 100644 index 00000000..20b97c7f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToJournal.json @@ -0,0 +1,286 @@ +{ + "name": "AttachFileToJournal", + "fully_qualified_name": "ZohoBooksApi.AttachFileToJournal@0.1.0", + "description": "Attach a file to a Zoho Books journal entry.\n\nThis tool is used to attach a file to a specific journal entry in Zoho Books. Use it when you need to upload and associate documents or files with journal entries for record-keeping or documentation purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization where the file will be attached. This is used to specify the target organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "journal_unique_identifier", + "required": true, + "description": "Provide the unique identifier for the specific journal entry to which the file will be attached.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "journal_id" + }, + { + "name": "attachment_file_path", + "required": false, + "description": "The path to the file that will be attached to the journal in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The file that is to be added as an Attachment in the Journal" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachment" + }, + { + "name": "document_to_attach", + "required": false, + "description": "The document or file to be attached to the journal entry in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "inferrable": true, + "http_endpoint_parameter_name": "doc" + }, + { + "name": "total_number_of_files", + "required": false, + "description": "Specify the total number of files to be attached to the journal. Ensure this matches the actual number of attachments.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "inferrable": true, + "http_endpoint_parameter_name": "totalFiles" + }, + { + "name": "document_identifiers", + "required": false, + "description": "A string of document IDs that need to be attached. These IDs should be associated with the documents intended for attachment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID's of the document" + }, + "inferrable": true, + "http_endpoint_parameter_name": "document_ids" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_journal_attachment'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/journals/{journal_id}/attachment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachment", + "tool_parameter_name": "attachment_file_path", + "description": "The file that is to be added as an Attachment in the Journal", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The file that is to be added as an Attachment in the Journal" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "doc", + "tool_parameter_name": "document_to_attach", + "description": "Document that is to be attached", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "totalFiles", + "tool_parameter_name": "total_number_of_files", + "description": "Total number of files.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "document_ids", + "tool_parameter_name": "document_identifiers", + "description": "ID's of the document", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID's of the document" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "journal_id", + "tool_parameter_name": "journal_unique_identifier", + "description": "Unique identifier of the journal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToPurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToPurchaseOrder.json new file mode 100644 index 00000000..d1006e75 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToPurchaseOrder.json @@ -0,0 +1,187 @@ +{ + "name": "AttachFileToPurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.AttachFileToPurchaseOrder@0.1.0", + "description": "Attach a file to a specified purchase order.\n\nUse this tool to attach a file to a specified purchase order in Zoho Books. Useful for adding supplementary documents or files to your existing purchase orders.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "The unique identifier of the purchase order to which the file will be attached.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "file_attachment", + "required": false, + "description": "The file to attach to the purchase order. Must be one of the following formats: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, or docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachment" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_purchase_order_attachment'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/attachment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachment", + "tool_parameter_name": "file_attachment", + "description": "Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToSalesOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToSalesOrder.json new file mode 100644 index 00000000..6fdbf7b5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachFileToSalesOrder.json @@ -0,0 +1,319 @@ +{ + "name": "AttachFileToSalesOrder", + "fully_qualified_name": "ZohoBooksApi.AttachFileToSalesOrder@0.1.0", + "description": "Attach a file to a specific sales order in Zoho Books.\n\nThis tool is used to attach a file to a specific sales order in Zoho Books. It should be called when you need to upload and associate a document with a sales order for tracking or record-keeping purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_identifier", + "required": true, + "description": "Unique identifier of the sales order to which the file will be attached.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "file_to_attach", + "required": false, + "description": "Path or identifier of the file to be attached to the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The file that is to be added as an Attachment in the Sales Order" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachment" + }, + { + "name": "document_file_path", + "required": false, + "description": "Path to the document file that needs to be attached to the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "inferrable": true, + "http_endpoint_parameter_name": "doc" + }, + { + "name": "number_of_files", + "required": false, + "description": "Specify the total number of files to be attached to the sales order.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "inferrable": true, + "http_endpoint_parameter_name": "totalFiles" + }, + { + "name": "document_identifiers", + "required": false, + "description": "A string representing the IDs of the documents to attach. Comma-separated for multiple IDs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID's of the document" + }, + "inferrable": true, + "http_endpoint_parameter_name": "document_ids" + }, + { + "name": "allow_sending_file_in_mail", + "required": false, + "description": "Boolean indicating if the file can be sent in mail. True allows sending.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Can the file be sent in mail." + }, + "inferrable": true, + "http_endpoint_parameter_name": "can_send_in_mail" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_sales_order_attachment'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/attachment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachment", + "tool_parameter_name": "file_to_attach", + "description": "The file that is to be added as an Attachment in the Sales Order", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The file that is to be added as an Attachment in the Sales Order" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "can_send_in_mail", + "tool_parameter_name": "allow_sending_file_in_mail", + "description": "Can the file be sent in mail.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Can the file be sent in mail." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "doc", + "tool_parameter_name": "document_file_path", + "description": "Document that is to be attached", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "totalFiles", + "tool_parameter_name": "number_of_files", + "description": "Total number of files.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "document_ids", + "tool_parameter_name": "document_identifiers", + "description": "ID's of the document", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID's of the document" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_identifier", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/AttachInvoiceFile.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachInvoiceFile.json new file mode 100644 index 00000000..40fa96c8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/AttachInvoiceFile.json @@ -0,0 +1,220 @@ +{ + "name": "AttachInvoiceFile", + "fully_qualified_name": "ZohoBooksApi.AttachInvoiceFile@0.1.0", + "description": "Attach a file to a specified invoice.\n\nUse this tool to attach a file to a specific invoice using its ID. It is useful for adding documents related to the invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization for which the invoice attachment is being added. This is required to identify the specific organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier for the invoice to attach the file to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "file_to_attach", + "required": false, + "description": "The file to be attached. Allowed extensions: gif, png, jpeg, jpg, bmp, pdf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The file to be attached.Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachment" + }, + { + "name": "send_attachment_in_email", + "required": false, + "description": "Set to True to send the attachment with the invoice when emailed.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "True to send the attachment with the invoice when emailed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "can_send_in_mail" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_invoice_attachment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/attachment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "can_send_in_mail", + "tool_parameter_name": "send_attachment_in_email", + "description": "True to send the attachment with the invoice when emailed.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "True to send the attachment with the invoice when emailed." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachment", + "tool_parameter_name": "file_to_attach", + "description": "The file to be attached.Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The file to be attached.Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/BulkDeleteCustomerPayments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/BulkDeleteCustomerPayments.json new file mode 100644 index 00000000..5cdd7384 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/BulkDeleteCustomerPayments.json @@ -0,0 +1,187 @@ +{ + "name": "BulkDeleteCustomerPayments", + "fully_qualified_name": "ZohoBooksApi.BulkDeleteCustomerPayments@0.1.0", + "description": "Delete multiple customer payments efficiently.\n\nUse this tool to remove several customer payments at once in Zoho Books. It's ideal for managing large-scale payment data cleanup.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier string for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_ids_to_delete", + "required": true, + "description": "Comma-separated list of payment IDs to be deleted in the bulk operation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of payment IDs to be deleted" + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "perform_bulk_delete", + "required": true, + "description": "Set to true to perform the bulk delete operation for customer payments.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to indicate bulk delete operation" + }, + "inferrable": true, + "http_endpoint_parameter_name": "bulk_delete" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_delete_customer_payments'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_ids_to_delete", + "description": "Comma-separated list of payment IDs to be deleted", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of payment IDs to be deleted" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bulk_delete", + "tool_parameter_name": "perform_bulk_delete", + "description": "Flag to indicate bulk delete operation", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to indicate bulk delete operation" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/CancelFixedAsset.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CancelFixedAsset.json new file mode 100644 index 00000000..ae1e85cc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CancelFixedAsset.json @@ -0,0 +1,154 @@ +{ + "name": "CancelFixedAsset", + "fully_qualified_name": "ZohoBooksApi.CancelFixedAsset@0.1.0", + "description": "Cancel a fixed asset in Zoho Books.\n\nUse this tool to cancel a fixed asset in Zoho Books by providing the fixed asset ID. This changes the status of the asset to canceled.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required to specify which organization's fixed asset to cancel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_id", + "required": true, + "description": "Unique identifier for the fixed asset to be canceled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_fixed_asset_cancel'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/status/cancel", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_id", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/CancelPurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CancelPurchaseOrder.json new file mode 100644 index 00000000..21bee615 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CancelPurchaseOrder.json @@ -0,0 +1,154 @@ +{ + "name": "CancelPurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.CancelPurchaseOrder@0.1.0", + "description": "Cancel a specific purchase order in Zoho Books.\n\nUse this tool to mark a purchase order as cancelled within the Zoho Books platform. This is useful when an order needs to be invalidated or stopped.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The identifier for the organization in Zoho Books. This ID is required to specify which organization's purchase order should be cancelled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "The unique identifier of the purchase order to be cancelled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_purchase_order_cancelled'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/status/cancelled", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/CancelWriteOffInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CancelWriteOffInvoice.json new file mode 100644 index 00000000..d932a4dd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CancelWriteOffInvoice.json @@ -0,0 +1,154 @@ +{ + "name": "CancelWriteOffInvoice", + "fully_qualified_name": "ZohoBooksApi.CancelWriteOffInvoice@0.1.0", + "description": "Cancel the write-off amount of an invoice in Zoho Books.\n\nUse this tool to revert the write-off process of an invoice in Zoho Books. This action can be performed when an invoice's write-off needs to be canceled, typically to amend financial records or correct a mistake.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books whose invoice write-off is to be canceled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_unique_identifier", + "required": true, + "description": "The unique identifier for the invoice whose write-off is to be canceled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'cancel_write_off_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/writeoff/cancel", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_unique_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeBankTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeBankTransaction.json new file mode 100644 index 00000000..29450619 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeBankTransaction.json @@ -0,0 +1,1003 @@ +{ + "name": "CategorizeBankTransaction", + "fully_qualified_name": "ZohoBooksApi.CategorizeBankTransaction@0.1.0", + "description": "Categorize an uncategorized bank transaction.\n\nThis tool categorizes an uncategorized bank transaction by creating a new transaction. Use it when a bank transaction needs to be classified into a specific category.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "Provide the ID of the organization to categorize the transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "Unique identifier of the bank transaction to be categorized.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "transaction_details", + "required": false, + "description": "A JSON object containing details like from and to account IDs, transaction type, amount, date, and other transaction-specific information.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense." + }, + "transaction_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency ID involved in the transaction." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "to_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "from_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if transaction is tax Inclusive" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bank Charges applied to the transaction" + }, + "user_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the User involved in the Transaction" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line in Bank Transactions" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Account" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the Tax" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total of the Item" + }, + "item_total_inclusive_of_tax": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total of the Item inclusive of Tax" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'categorize_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "transaction_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense." + }, + "transaction_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency ID involved in the transaction." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "to_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "from_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if transaction is tax Inclusive" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bank Charges applied to the transaction" + }, + "user_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the User involved in the Transaction" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line in Bank Transactions" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Account" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the Tax" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total of the Item" + }, + "item_total_inclusive_of_tax": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total of the Item inclusive of Tax" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": 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 \"required\": [\n \"transaction_type\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"from_account_id\": {\n \"description\": \"The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund.\",\n \"type\": \"string\",\n \"example\": \"460000000070003\"\n },\n \"to_account_id\": {\n \"description\": \"ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"transaction_type\": {\n \"description\": \"Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :\",\n \"type\": \"string\",\n \"example\": \"deposit\"\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"payment_mode\": {\n \"description\": \"Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.,\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n },\n \"customer_id\": {\n \"description\": \"ID of the customer or vendor.\",\n \"type\": \"string\",\n \"example\": \"460000000000111\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"documents\": {\n \"description\": \"List of files to be attached to a particular transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"file_name\": {\n \"description\": \"Name of the attached file.\"\n },\n \"document_id\": {\n \"description\": \"Unique ID of the attached file.\"\n }\n }\n }\n },\n \"currency_id\": {\n \"description\": \"The currency ID involved in the transaction.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"to_account_tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"from_account_tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"is_inclusive_tax\": {\n \"description\": \"Check if transaction is tax Inclusive\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"bank_charges\": {\n \"description\": \"Bank Charges applied to the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"user_id\": {\n \"description\": \"ID of the User involved in the Transaction\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the Tax Authority\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_id\": {\n \"description\": \"ID of the Line in Bank Transactions\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000001234\"\n },\n \"account_id\": {\n \"description\": \"Mandatory Account id for which transactions are to be listed.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"account_name\": {\n \"description\": \"Name of the Account\",\n \"type\": \"string\",\n \"example\": \"Petty Cash\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n },\n \"tax_amount\": {\n \"description\": \"Amount of Tax\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tax_name\": {\n \"description\": \"Name of the Tax\",\n \"type\": \"string\"\n },\n \"tax_type\": {\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_percentage\": {\n \"description\": \"Percentage of the Tax\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"item_total\": {\n \"description\": \"Total of the Item\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 7500\n },\n \"item_total_inclusive_of_tax\": {\n \"description\": \"Total of the Item inclusive of Tax\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 7500\n },\n \"item_order\": {\n \"description\": \"Order of the Item\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeBankTransactionAsExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeBankTransactionAsExpense.json new file mode 100644 index 00000000..59121a03 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeBankTransactionAsExpense.json @@ -0,0 +1,1388 @@ +{ + "name": "CategorizeBankTransactionAsExpense", + "fully_qualified_name": "ZohoBooksApi.CategorizeBankTransactionAsExpense@0.1.0", + "description": "Categorize an uncategorized bank transaction as an expense.\n\nUse this tool to classify an uncategorized bank transaction as an expense in Zoho Books. It should be called when a user needs to organize their financial records by assigning a transaction to the expense category.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to identify which organization's transaction is being categorized.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "Unique identifier for the bank transaction to be categorized as an expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "attachment_document", + "required": false, + "description": "Document file to attach with the transaction as a string (e.g., base64 encoded or URL).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "inferrable": true, + "http_endpoint_parameter_name": "doc" + }, + { + "name": "total_number_of_files", + "required": false, + "description": "Total count of files to be attached to the transaction.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "inferrable": true, + "http_endpoint_parameter_name": "totalFiles" + }, + { + "name": "document_identifiers", + "required": false, + "description": "Comma-separated list of document IDs to be attached to the transaction.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "document_ids" + }, + { + "name": "transaction_details", + "required": false, + "description": "JSON object containing all relevant details for categorizing the bank transaction, including account IDs, transaction date, amount, taxes, line items, and any additional metadata required.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the credit/ bank account the payment is made." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project associated with the expense." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if transaction is tax Inclusive" + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A boolean value to specify if the expense is billable." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "zp_project_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "zp_project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Project" + }, + "zp_client_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of client" + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Vendor" + }, + "vehicle_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Vehicle" + }, + "mileage_unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of Mileage" + }, + "mileage_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mileage Rate to be Applied" + }, + "can_reclaim_vat_on_mileage": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if VAT can be reclaimed on mileage" + }, + "fuel_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Fuel Used. Allowed Values : petrol, lpg, diesel" + }, + "engine_capacity_range": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Fuel Used. Allowed Values : less_than_1400cc, between_1401cc_and_1600cc, between_1601cc_and_2000cc and more_than_2000cc" + }, + "employee_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Employee" + }, + "mileage_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Mileage. Allowed Values : gmaps,imaps,gps,odometer,wmaps,manual,non_mileage and per_diem" + }, + "expense_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Expense" + }, + "distance": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Distance Covered" + }, + "start_reading": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start Reading of the Odometer" + }, + "end_reading": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End Reading of the Odometer" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency ID involved in the transaction." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "recurring_expense_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Recurring Expense" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bank transaction. VAT treatment denotes the location of the customer or vendor. If the customer or vendor resides in the UK then the VAT treatment is uk. If the customer or vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing/selling Goods then his VAT treatment is eu_vat_registered. And, if he resides outside the UK then his VAT treatment is overseas." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bank transaction.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase or expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase or expense and reverse charge VAT needs to be reported." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Customer should be updated" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction. This denotes whether the transaction line item is to be treated as goods or as a service. Allowed Values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + } + }, + "description": null + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reason" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line Item" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Item" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction. This denotes whether the transaction line item is to be treated as goods or as a service. Allowed Values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase or expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase or expense and reverse charge VAT needs to be reported." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + } + }, + "description": null + }, + "zcrm_potential_id": { + "val_type": "integer", + "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 'categorize_bank_transaction_as_expense'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/expenses", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "doc", + "tool_parameter_name": "attachment_document", + "description": "Document that is to be attached", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "totalFiles", + "tool_parameter_name": "total_number_of_files", + "description": "Total number of files.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "document_ids", + "tool_parameter_name": "document_identifiers", + "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": "transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "transaction_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the credit/ bank account the payment is made." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project associated with the expense." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if transaction is tax Inclusive" + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A boolean value to specify if the expense is billable." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "zp_project_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "zp_project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Project" + }, + "zp_client_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of client" + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Vendor" + }, + "vehicle_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Vehicle" + }, + "mileage_unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of Mileage" + }, + "mileage_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mileage Rate to be Applied" + }, + "can_reclaim_vat_on_mileage": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if VAT can be reclaimed on mileage" + }, + "fuel_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Fuel Used. Allowed Values : petrol, lpg, diesel" + }, + "engine_capacity_range": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Fuel Used. Allowed Values : less_than_1400cc, between_1401cc_and_1600cc, between_1601cc_and_2000cc and more_than_2000cc" + }, + "employee_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Employee" + }, + "mileage_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Mileage. Allowed Values : gmaps,imaps,gps,odometer,wmaps,manual,non_mileage and per_diem" + }, + "expense_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Expense" + }, + "distance": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Distance Covered" + }, + "start_reading": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start Reading of the Odometer" + }, + "end_reading": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End Reading of the Odometer" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency ID involved in the transaction." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "recurring_expense_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Recurring Expense" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bank transaction. VAT treatment denotes the location of the customer or vendor. If the customer or vendor resides in the UK then the VAT treatment is uk. If the customer or vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing/selling Goods then his VAT treatment is eu_vat_registered. And, if he resides outside the UK then his VAT treatment is overseas." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bank transaction.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase or expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase or expense and reverse charge VAT needs to be reported." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Customer should be updated" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction. This denotes whether the transaction line item is to be treated as goods or as a service. Allowed Values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + } + }, + "description": null + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reason" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line Item" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Item" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction. This denotes whether the transaction line item is to be treated as goods or as a service. Allowed Values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase or expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase or expense and reverse charge VAT needs to be reported." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + } + }, + "description": null + }, + "zcrm_potential_id": { + "val_type": "integer", + "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 \"account_id\": {\n \"description\": \"Mandatory Account id for which transactions are to be listed.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"paid_through_account_id\": {\n \"description\": \"ID of the credit/ bank account the payment is made.\",\n \"type\": \"string\",\n \"example\": \"460000000000358\"\n },\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"project_id\": {\n \"description\": \"ID of the project associated with the expense.\",\n \"type\": \"string\"\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"description\": \"Check if transaction is tax Inclusive\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_billable\": {\n \"description\": \"A boolean value to specify if the expense is billable.\",\n \"type\": \"boolean\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n },\n \"customer_id\": {\n \"description\": \"ID of the customer or vendor.\",\n \"type\": \"string\",\n \"example\": \"460000000000111\"\n },\n \"zp_project_id\": {\n \"description\": \"ID of the Project\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"zp_project_name\": {\n \"description\": \"Name of the Project\",\n \"type\": \"string\"\n },\n \"zp_client_id\": {\n \"description\": \"ID of client\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"vendor_id\": {\n \"description\": \"ID of the Vendor\",\n \"type\": \"string\",\n \"example\": \"460000000026049\"\n },\n \"vehicle_id\": {\n \"description\": \"ID of the Vehicle\",\n \"type\": \"string\"\n },\n \"mileage_unit\": {\n \"description\": \"Unit of Mileage\",\n \"type\": \"string\",\n \"example\": \"km\"\n },\n \"mileage_rate\": {\n \"description\": \"Mileage Rate to be Applied\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"can_reclaim_vat_on_mileage\": {\n \"description\": \"Check if VAT can be reclaimed on mileage\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"fuel_type\": {\n \"description\": \"Type of Fuel Used. Allowed Values : petrol, lpg, diesel\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"engine_capacity_range\": {\n \"description\": \"Type of Fuel Used. Allowed Values : less_than_1400cc, between_1401cc_and_1600cc, between_1601cc_and_2000cc and more_than_2000cc\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"employee_id\": {\n \"description\": \"ID of the Employee\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"mileage_type\": {\n \"description\": \"Type of Mileage. Allowed Values : gmaps,imaps,gps,odometer,wmaps,manual,non_mileage and per_diem\",\n \"type\": \"string\",\n \"example\": \"non_mileage\"\n },\n \"expense_type\": {\n \"description\": \"Type of Expense\",\n \"type\": \"string\",\n \"example\": \"non_mileage\"\n },\n \"distance\": {\n \"description\": \"Distance Covered\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 4\n },\n \"start_reading\": {\n \"description\": \"Start Reading of the Odometer\",\n \"type\": \"string\"\n },\n \"end_reading\": {\n \"description\": \"End Reading of the Odometer\",\n \"type\": \"string\"\n },\n \"currency_id\": {\n \"description\": \"The currency ID involved in the transaction.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"documents\": {\n \"description\": \"List of files to be attached to a particular transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"file_name\": {\n \"description\": \"Name of the attached file.\"\n },\n \"document_id\": {\n \"description\": \"Unique ID of the attached file.\"\n }\n }\n }\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"recurring_expense_id\": {\n \"description\": \"ID of the Recurring Expense\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment for the bank transaction. VAT treatment denotes the location of the customer or vendor. If the customer or vendor resides in the UK then the VAT treatment is uk. If the customer or vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing/selling Goods then his VAT treatment is eu_vat_registered. And, if he resides outside the UK then his VAT treatment is overseas.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the bank transaction.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods purchase or expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service purchase or expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_update_customer\": {\n \"description\": \"Check if Customer should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"product_type\": {\n \"description\": \"Type of the transaction. This denotes whether the transaction line item is to be treated as goods or as a service. Allowed Values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"taxes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_name\": {\n \"description\": \"Name of the Tax\",\n \"type\": \"string\"\n },\n \"tax_amount\": {\n \"description\": \"Amount of Tax\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n }\n }\n }\n },\n \"reason\": {\n \"description\": \"Reason\",\n \"type\": \"string\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"description\": \"ID of the Line Item\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000012834\"\n },\n \"account_id\": {\n \"description\": \"Mandatory Account id for which transactions are to be listed.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"item_order\": {\n \"description\": \"Order of the Item\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the transaction. This denotes whether the transaction line item is to be treated as goods or as a service. Allowed Values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods purchase or expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service purchase or expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n }\n }\n }\n },\n \"zcrm_potential_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeBankTransactionPaymentRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeBankTransactionPaymentRefund.json new file mode 100644 index 00000000..9cbb6bbe --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeBankTransactionPaymentRefund.json @@ -0,0 +1,301 @@ +{ + "name": "CategorizeBankTransactionPaymentRefund", + "fully_qualified_name": "ZohoBooksApi.CategorizeBankTransactionPaymentRefund@0.1.0", + "description": "Categorize bank transactions as payment refunds.\n\nUse this tool to categorize uncategorized bank transactions specifically as payment refunds in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_statement_line_id", + "required": true, + "description": "Unique identifier for the bank statement line to be categorized.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank statement line." + }, + "inferrable": true, + "http_endpoint_parameter_name": "statement_line_id" + }, + { + "name": "payment_refund_details", + "required": false, + "description": "Details required for categorizing the transaction as a payment refund, including date, mode, reference number, amount, exchange rate, account ID, and description.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of refund. Ex - Cash, Cheque etc.," + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'categorize_bank_transaction_as_payment_refund'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{statement_line_id}/categorize/paymentrefunds", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "statement_line_id", + "tool_parameter_name": "bank_statement_line_id", + "description": "Unique identifier of the bank statement line.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank statement line." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "payment_refund_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of refund. Ex - Cash, Cheque etc.," + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + } + }, + "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 \"required\": [\n \"date\",\n \"amount\",\n \"from_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"refund_mode\": {\n \"description\": \"Mode of refund. Ex - Cash, Cheque etc.,\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"from_account_id\": {\n \"description\": \"The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund.\",\n \"type\": \"string\",\n \"example\": \"460000000070003\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeRefundVendorCredit.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeRefundVendorCredit.json new file mode 100644 index 00000000..57afe6a2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeRefundVendorCredit.json @@ -0,0 +1,317 @@ +{ + "name": "CategorizeRefundVendorCredit", + "fully_qualified_name": "ZohoBooksApi.CategorizeRefundVendorCredit@0.1.0", + "description": "Categorize transactions as vendor credit refunds.\n\nUse this tool to categorize an uncategorized transaction as a refund from a vendor credit in Zoho Books. Call this tool when you need to identify and organize transactions involving vendor credit refunds.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Specify the ID of the organization for which the transaction is being categorized as a vendor credit refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "Unique identifier of the bank transaction to categorize as a vendor credit refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "transaction_details", + "required": false, + "description": "A JSON object containing detailed information about the transaction. Include vendor credit ID, transaction date, refund mode, reference number, amount, exchange rate, account ID, and a brief description.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_credit_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor credit that has to be refunded." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of refund. Ex - Cash, Cheque etc.," + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'categorize_as_vendor_credit_refunds'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/vendorcreditrefunds", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "transaction_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_credit_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor credit that has to be refunded." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of refund. Ex - Cash, Cheque etc.," + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + } + }, + "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 \"required\": [\n \"vendor_credit_id\",\n \"date\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_credit_id\": {\n \"description\": \"ID of the vendor credit that has to be refunded.\",\n \"type\": \"string\",\n \"example\": \"460000000030049\"\n },\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"refund_mode\": {\n \"description\": \"Mode of refund. Ex - Cash, Cheque etc.,\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"account_id\": {\n \"description\": \"Mandatory Account id for which transactions are to be listed.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeTransactionAsPayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeTransactionAsPayment.json new file mode 100644 index 00000000..bfce4725 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeTransactionAsPayment.json @@ -0,0 +1,579 @@ +{ + "name": "CategorizeTransactionAsPayment", + "fully_qualified_name": "ZohoBooksApi.CategorizeTransactionAsPayment@0.1.0", + "description": "Categorize an uncategorized transaction as a Customer Payment.\n\nUse this tool to categorize an uncategorized bank transaction as a Customer Payment in Zoho Books. This should be called when you need to update the categorization status of bank transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books for which the transaction is being categorized.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "Unique identifier of the bank transaction to be categorized as Customer Payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "transaction_details", + "required": false, + "description": "A JSON object with details for categorizing a bank transaction as a Customer Payment. Includes customer ID, invoice details, payment mode, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "retainerinvoice_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Retainer Invoice" + }, + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_payment_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Invoice Payment" + }, + "invoice_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Invoice" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the Entity" + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of discount in the Invoice" + } + }, + "description": null + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bank Charges applied to the transaction" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "template_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the template" + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of contact person(s) for whom invoice has to be sent." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'categorize_bank_transaction_as_customer_payment'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/customerpayments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "transaction_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "retainerinvoice_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Retainer Invoice" + }, + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_payment_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Invoice Payment" + }, + "invoice_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Invoice" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the Entity" + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of discount in the Invoice" + } + }, + "description": null + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bank Charges applied to the transaction" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "template_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the template" + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of contact person(s) for whom invoice has to be sent." + } + }, + "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 \"customer_id\": {\n \"description\": \"ID of the customer or vendor.\",\n \"type\": \"string\",\n \"example\": \"460000000000111\"\n },\n \"retainerinvoice_id\": {\n \"description\": \"ID of the Retainer Invoice\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"invoices\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"invoice_payment_id\": {\n \"description\": \"ID of the Invoice Payment\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000134123\"\n },\n \"invoice_id\": {\n \"description\": \"ID of the Invoice\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000000481\"\n },\n \"amount_applied\": {\n \"description\": \"Amount applied to the Entity\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 150\n },\n \"tax_amount_withheld\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"discount_amount\": {\n \"description\": \"Amount of discount in the Invoice\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 20\n }\n }\n }\n },\n \"payment_mode\": {\n \"description\": \"Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.,\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"bank_charges\": {\n \"description\": \"Bank Charges applied to the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"account_id\": {\n \"description\": \"Mandatory Account id for which transactions are to be listed.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"documents\": {\n \"description\": \"List of files to be attached to a particular transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"file_name\": {\n \"description\": \"Name of the attached file.\"\n },\n \"document_id\": {\n \"description\": \"Unique ID of the attached file.\"\n }\n }\n }\n },\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"template_id\": {\n \"description\": \"ID of the template\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"contact_persons\": {\n \"description\": \"Array of contact person(s) for whom invoice has to be sent.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"460000000870911\",\n \"460000000870915\"\n ]\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeTransactionAsRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeTransactionAsRefund.json new file mode 100644 index 00000000..bd2b264f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeTransactionAsRefund.json @@ -0,0 +1,317 @@ +{ + "name": "CategorizeTransactionAsRefund", + "fully_qualified_name": "ZohoBooksApi.CategorizeTransactionAsRefund@0.1.0", + "description": "Categorize a transaction as a credit note refund.\n\nUse this tool to categorize an uncategorized bank transaction specifically as a refund from a credit note.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Must match the organization in Zoho Books to categorize transactions accurately.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "transaction_id", + "required": true, + "description": "Unique identifier of the bank transaction to categorize as a refund from a credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "transaction_details", + "required": false, + "description": "Details of the transaction to be categorized, including credit note ID, transaction date, refund mode, reference number, transaction amount, exchange rate, source account ID, and a brief description.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "creditnote_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the credit note that has to be refunded." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of refund. Ex - Cash, Cheque etc.," + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'categorize_as_credit_note_refunds'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/creditnoterefunds", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "transaction_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "creditnote_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the credit note that has to be refunded." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of refund. Ex - Cash, Cheque etc.," + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + } + }, + "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 \"required\": [\n \"creditnote_id\",\n \"date\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"creditnote_id\": {\n \"description\": \"ID of the credit note that has to be refunded.\",\n \"type\": \"string\",\n \"example\": \"4000000030049\"\n },\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"refund_mode\": {\n \"description\": \"Mode of refund. Ex - Cash, Cheque etc.,\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"from_account_id\": {\n \"description\": \"The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund.\",\n \"type\": \"string\",\n \"example\": \"460000000070003\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeTransactionAsVendorPayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeTransactionAsVendorPayment.json new file mode 100644 index 00000000..13e3d15b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeTransactionAsVendorPayment.json @@ -0,0 +1,515 @@ +{ + "name": "CategorizeTransactionAsVendorPayment", + "fully_qualified_name": "ZohoBooksApi.CategorizeTransactionAsVendorPayment@0.1.0", + "description": "Categorize a bank transaction as a vendor payment.\n\nUse this tool to categorize an uncategorized bank transaction as a vendor payment in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique string ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "transaction_id", + "required": true, + "description": "Unique identifier of the bank transaction to categorize as vendor payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "transaction_details", + "required": false, + "description": "JSON object containing details such as vendor_id, bills, payment_mode, description, date, reference_number, exchange_rate, paid_through_account_id, amount, custom_fields, is_paid_via_print_check, and check_details for categorizing the transaction.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Vendor" + }, + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill Payment" + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the Entity" + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the credit/ bank account the payment is made." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "is_paid_via_print_check": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Is the entity paid via print check" + }, + "check_details": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "memo": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "check_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of the Check Created" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'categorize_bank_transaction_as_vendor_payment'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/categorize/vendorpayments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "transaction_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Vendor" + }, + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill Payment" + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill" + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the Entity" + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the credit/ bank account the payment is made." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "is_paid_via_print_check": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Is the entity paid via print check" + }, + "check_details": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "memo": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "check_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of the Check Created" + } + }, + "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 \"vendor_id\": {\n \"description\": \"ID of the Vendor\",\n \"type\": \"string\",\n \"example\": \"460000000026049\"\n },\n \"bills\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"bill_payment_id\": {\n \"description\": \"ID of the Bill Payment\",\n \"type\": \"string\"\n },\n \"bill_id\": {\n \"description\": \"ID of the Bill\",\n \"type\": \"string\",\n \"example\": \"460000000053199\"\n },\n \"amount_applied\": {\n \"description\": \"Amount applied to the Entity\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 150\n },\n \"tax_amount_withheld\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n }\n }\n }\n },\n \"payment_mode\": {\n \"description\": \"Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.,\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n },\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"paid_through_account_id\": {\n \"description\": \"ID of the credit/ bank account the payment is made.\",\n \"type\": \"string\",\n \"example\": \"460000000000358\"\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"is_paid_via_print_check\": {\n \"description\": \"Is the entity paid via print check\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"us\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"check_details\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"memo\": {\n \"type\": \"string\"\n },\n \"check_number\": {\n \"description\": \"Number of the Check Created\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeVendorPaymentRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeVendorPaymentRefund.json new file mode 100644 index 00000000..ea480463 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CategorizeVendorPaymentRefund.json @@ -0,0 +1,317 @@ +{ + "name": "CategorizeVendorPaymentRefund", + "fully_qualified_name": "ZohoBooksApi.CategorizeVendorPaymentRefund@0.1.0", + "description": "Categorize bank transactions as Vendor Payment Refund.\n\nUse this tool to categorize uncategorized bank transactions as vendor payment refunds. It should be called when organizing financial data related to refunds from vendors.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization whose transactions are being categorized.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_statement_line_id", + "required": true, + "description": "Unique identifier for the bank statement line to categorize as Vendor Payment Refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank statement line." + }, + "inferrable": true, + "http_endpoint_parameter_name": "statement_line_id" + }, + { + "name": "vendor_payment_refund_details", + "required": false, + "description": "Details for categorizing a bank transaction as a vendor payment refund. Includes vendor payment ID, transaction date, refund mode, reference number, amount, exchange rate, to-account ID, and description.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendorpayment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Vendor Payment to which you want to record the refund." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of refund. Ex - Cash, Cheque etc.," + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'categorize_as_vendor_payment_refund'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{statement_line_id}/categorize/vendorpaymentrefunds", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "statement_line_id", + "tool_parameter_name": "bank_statement_line_id", + "description": "Unique identifier of the bank statement line.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank statement line." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "vendor_payment_refund_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendorpayment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Vendor Payment to which you want to record the refund." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of refund. Ex - Cash, Cheque etc.," + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + } + }, + "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 \"required\": [\n \"date\",\n \"amount\",\n \"to_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendorpayment_id\": {\n \"description\": \"Vendor Payment to which you want to record the refund.\",\n \"type\": \"string\",\n \"example\": \"460000000012345\"\n },\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"refund_mode\": {\n \"description\": \"Mode of refund. Ex - Cash, Cheque etc.,\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"to_account_id\": {\n \"description\": \"ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CloneProject.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CloneProject.json new file mode 100644 index 00000000..75e42f6b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CloneProject.json @@ -0,0 +1,221 @@ +{ + "name": "CloneProject", + "fully_qualified_name": "ZohoBooksApi.CloneProject@0.1.0", + "description": "Clone an existing project in Zoho Books.\n\nUse this tool to create a copy of an existing project in Zoho Books. It's useful for duplicating project setups with similar parameters or settings.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_unique_identifier", + "required": true, + "description": "Unique string identifier of the project to be cloned.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "project_details", + "required": false, + "description": "JSON object containing 'project_name' (max 100 chars) and 'description' (max 500 chars).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'clone_project'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/clone", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_unique_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "project_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + } + }, + "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 \"required\": [\n \"project_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"project_name\": {\n \"description\": \"Name of the project. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Network Distribution\"\n },\n \"description\": {\n \"description\": \"Project description. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \"Distribution for the system of intermediaries between the producer of goods and/or services and the final user\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ConvertCreditNoteToDraft.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ConvertCreditNoteToDraft.json new file mode 100644 index 00000000..782b3a94 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ConvertCreditNoteToDraft.json @@ -0,0 +1,154 @@ +{ + "name": "ConvertCreditNoteToDraft", + "fully_qualified_name": "ZohoBooksApi.ConvertCreditNoteToDraft@0.1.0", + "description": "Convert a voided credit note to a draft status.\n\nUse this tool to change the status of a voided credit note back to draft in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to be converted to draft.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_credit_note_draft'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/status/draft", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ConvertPurchaseOrderToBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ConvertPurchaseOrderToBill.json new file mode 100644 index 00000000..a215dc65 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ConvertPurchaseOrderToBill.json @@ -0,0 +1,154 @@ +{ + "name": "ConvertPurchaseOrderToBill", + "fully_qualified_name": "ZohoBooksApi.ConvertPurchaseOrderToBill@0.1.0", + "description": "Fetch bill payload from purchase orders.\n\nThis tool retrieves the bill payload for selected purchase orders using their IDs. It should be called when you want to convert purchase orders into a bill. After obtaining the payload, use it to create a bill in the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Enter the ID of the organization for which the bill will be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_ids", + "required": true, + "description": "Comma-separated IDs of the purchase orders to be converted into a bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the purchase order" + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_ids" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'convert_purchase_order_to_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/editpage/frompurchaseorders", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_ids", + "tool_parameter_name": "purchase_order_ids", + "description": "ID of the purchase order", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the purchase order" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/CreateAssociatedTax.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateAssociatedTax.json new file mode 100644 index 00000000..526f644e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateAssociatedTax.json @@ -0,0 +1,444 @@ +{ + "name": "CreateAssociatedTax", + "fully_qualified_name": "ZohoBooksApi.CreateAssociatedTax@0.1.0", + "description": "Create and associate a tax with an item.\n\nThis tool creates a tax that can be added to an item within the Zoho Books system. It is used when a new tax needs to be defined and linked to specific goods or services.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books where the tax will be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_details", + "required": false, + "description": "JSON object containing details of the tax to be created, including name, percentage, type, authority information, country code, and update flags.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of Percentage Taxable." + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type to determine whether it is a simple or compound tax. Allowed Values: tax and compound_tax" + }, + "tax_factor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Tax Factor. Allowed values: rate, share" + }, + "tax_specific_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Tax For Indian Edition. Allowed Values : igst ,cgst ,sgst ,nil, cess .
Type of Tax for Mexico Edition. Allowed Values : isr, iva, ieps.
Type of Tax for South Africa Edition. Allowed Values :
soa_less_than_28d - Supply of accommodation not exceeding 28 days,
soa_more_than_28d - Supply of accommodation exceeding than 28 days,
ciu_prev_tax_supply - Change in use (Taxable supplies),
ciu_prev_nontax_supply - Change in use (Non-Taxable supplies),
export_of_shg - Export of second hand goods." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Two letter country code for the EU country to which the tax belongs." + }, + "purchase_tax_expense_account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account ID in which Purchase Tax will be Computed" + }, + "is_value_added": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Tax is Value Added" + }, + "update_recurring_invoice": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if recurring invoice should be updated" + }, + "update_recurring_expense": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if recurring expenses should be updated" + }, + "update_draft_invoice": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Draft Invoices should be updated" + }, + "update_recurring_bills": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Recurring Bills should be updated" + }, + "update_draft_so": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Draft Sales Orders should be updated" + }, + "update_subscription": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Subscriptions should be updated" + }, + "update_project": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Projects should be updated" + }, + "is_editable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if tax is editable" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_tax'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxes", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "tax_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of Percentage Taxable." + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type to determine whether it is a simple or compound tax. Allowed Values: tax and compound_tax" + }, + "tax_factor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Tax Factor. Allowed values: rate, share" + }, + "tax_specific_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Tax For Indian Edition. Allowed Values : igst ,cgst ,sgst ,nil, cess .
Type of Tax for Mexico Edition. Allowed Values : isr, iva, ieps.
Type of Tax for South Africa Edition. Allowed Values :
soa_less_than_28d - Supply of accommodation not exceeding 28 days,
soa_more_than_28d - Supply of accommodation exceeding than 28 days,
ciu_prev_tax_supply - Change in use (Taxable supplies),
ciu_prev_nontax_supply - Change in use (Non-Taxable supplies),
export_of_shg - Export of second hand goods." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Two letter country code for the EU country to which the tax belongs." + }, + "purchase_tax_expense_account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account ID in which Purchase Tax will be Computed" + }, + "is_value_added": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Tax is Value Added" + }, + "update_recurring_invoice": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if recurring invoice should be updated" + }, + "update_recurring_expense": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if recurring expenses should be updated" + }, + "update_draft_invoice": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Draft Invoices should be updated" + }, + "update_recurring_bills": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Recurring Bills should be updated" + }, + "update_draft_so": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Draft Sales Orders should be updated" + }, + "update_subscription": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Subscriptions should be updated" + }, + "update_project": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Projects should be updated" + }, + "is_editable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if tax is editable" + } + }, + "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 \"tax_name\": {\n \"description\": \"Name of the Tax\",\n \"type\": \"string\",\n \"example\": \"Sales Group\"\n },\n \"tax_percentage\": {\n \"description\": \"Number of Percentage Taxable.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10.5\n },\n \"tax_type\": {\n \"description\": \"Type to determine whether it is a simple or compound tax. Allowed Values: tax and compound_tax\",\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_factor\": {\n \"description\": \"Type of Tax Factor. Allowed values: rate, share\",\n \"type\": \"string\",\n \"example\": \"rate\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_specific_type\": {\n \"description\": \"Type of Tax For Indian Edition. Allowed Values : igst ,cgst ,sgst ,nil, cess .
Type of Tax for Mexico Edition. Allowed Values : isr, iva, ieps.
Type of Tax for South Africa Edition. Allowed Values :
soa_less_than_28d - Supply of accommodation not exceeding 28 days,
soa_more_than_28d - Supply of accommodation exceeding than 28 days,
ciu_prev_tax_supply - Change in use (Taxable supplies),
ciu_prev_nontax_supply - Change in use (Non-Taxable supplies),
export_of_shg - Export of second hand goods.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"mx\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Name of the Tax Authority\",\n \"type\": \"string\",\n \"example\": \"Illinois Department of Revenue\"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": \"460000000066001\",\n \"x-node_available_in\": [\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"country_code\": {\n \"description\": \"Two letter country code for the EU country to which the tax belongs.\",\n \"type\": \"string\",\n \"example\": \"UK\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\",\n \"gcc\",\n \"global\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"purchase_tax_expense_account_id\": {\n \"description\": \"Account ID in which Purchase Tax will be Computed\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"x-node_available_in\": [\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_value_added\": {\n \"description\": \"Check if Tax is Value Added\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_recurring_invoice\": {\n \"description\": \"Check if recurring invoice should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_recurring_expense\": {\n \"description\": \"Check if recurring expenses should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_draft_invoice\": {\n \"description\": \"Check if Draft Invoices should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_recurring_bills\": {\n \"description\": \"Check if Recurring Bills should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_draft_so\": {\n \"description\": \"Check if Draft Sales Orders should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_subscription\": {\n \"description\": \"Check if Subscriptions should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_project\": {\n \"description\": \"Check if Projects should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_editable\": {\n \"description\": \"Check if tax is editable\",\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateBankAccount.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateBankAccount.json new file mode 100644 index 00000000..d19759e2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateBankAccount.json @@ -0,0 +1,364 @@ +{ + "name": "CreateBankAccount", + "fully_qualified_name": "ZohoBooksApi.CreateBankAccount@0.1.0", + "description": "Create a bank or credit card account in your organization.\n\nThis tool is used to create a new bank account or credit card account for your organization via Zoho Books. Call this tool when you need to add financial accounts to manage and track transactions in your organization's accounting system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which to create the bank or credit card account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_details", + "required": false, + "description": "JSON containing details for creating a bank or credit card account, including account name, type, number, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the account" + }, + "account_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the account" + }, + "account_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number associated with the Bank Account" + }, + "account_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Account" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency associated with the Account" + }, + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the currency associated with the Bank Account" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Account" + }, + "bank_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Bank" + }, + "routing_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Routing Number of the Account" + }, + "is_primary_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Account is Primary Account in Zoho Books" + }, + "is_paypal_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Account is Paypal Account" + }, + "paypal_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of Payment for the Paypal Account. Allowed Values : standard and adaptive" + }, + "paypal_email_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email Address of the Paypal account." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_bank_account'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bank_account_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the account" + }, + "account_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the account" + }, + "account_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number associated with the Bank Account" + }, + "account_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Account" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency associated with the Account" + }, + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the currency associated with the Bank Account" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Account" + }, + "bank_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Bank" + }, + "routing_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Routing Number of the Account" + }, + "is_primary_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Account is Primary Account in Zoho Books" + }, + "is_paypal_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Account is Paypal Account" + }, + "paypal_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of Payment for the Paypal Account. Allowed Values : standard and adaptive" + }, + "paypal_email_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email Address of the Paypal account." + } + }, + "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 \"required\": [\n \"account_name\",\n \"account_type\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"account_name\": {\n \"description\": \"Name of the account\",\n \"type\": \"string\",\n \"example\": \"Corporate Account\"\n },\n \"account_type\": {\n \"description\": \"Type of the account\",\n \"type\": \"string\",\n \"example\": \"bank\"\n },\n \"account_number\": {\n \"description\": \"Number associated with the Bank Account\",\n \"type\": \"string\",\n \"example\": \"80000009823\"\n },\n \"account_code\": {\n \"description\": \"Code of the Account\",\n \"type\": \"string\"\n },\n \"currency_id\": {\n \"description\": \"ID of the Currency associated with the Account\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"currency_code\": {\n \"description\": \"Code of the currency associated with the Bank Account\",\n \"type\": \"string\",\n \"example\": \"USD\"\n },\n \"description\": {\n \"description\": \"Description of the Account\",\n \"type\": \"string\",\n \"example\": \"Salary details.\"\n },\n \"bank_name\": {\n \"description\": \"Name of the Bank\",\n \"type\": \"string\",\n \"example\": \"Xavier Bank\"\n },\n \"routing_number\": {\n \"description\": \"Routing Number of the Account\",\n \"type\": \"string\",\n \"example\": \"123456789\"\n },\n \"is_primary_account\": {\n \"description\": \"Check if the Account is Primary Account in Zoho Books\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_paypal_account\": {\n \"description\": \"Check if the Account is Paypal Account\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"paypal_type\": {\n \"description\": \"The type of Payment for the Paypal Account. Allowed Values : standard and adaptive\",\n \"type\": \"string\"\n },\n \"paypal_email_address\": {\n \"description\": \"Email Address of the Paypal account.\",\n \"type\": \"string\",\n \"example\": \"johnsmith@zilliuminc.com\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateBankTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateBankTransaction.json new file mode 100644 index 00000000..cfed84a4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateBankTransaction.json @@ -0,0 +1,710 @@ +{ + "name": "CreateBankTransaction", + "fully_qualified_name": "ZohoBooksApi.CreateBankTransaction@0.1.0", + "description": "Creates a bank transaction in Zoho Books.\n\nThis tool is used to create a bank transaction within Zoho Books. It should be called when a user needs to log a financial transaction using allowed transaction types.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the bank transaction is to be created. This ID helps identify the specific organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_details", + "required": false, + "description": "JSON object with details of the bank transaction, including from_account_id, to_account_id, transaction_type, amount, payment_mode, exchange_rate, date, customer_id, reference_number, description, currency_id, tax_id, is_inclusive_tax, tags, from_account_tags, to_account_tags, documents, bank_charges, user_id, tax_authority_id, tax_exemption_id, and custom_fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense." + }, + "transaction_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency ID involved in the transaction." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if transaction is tax Inclusive" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "from_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "to_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bank Charges applied to the transaction" + }, + "user_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the User involved in the Transaction" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bank_transaction_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense." + }, + "transaction_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency ID involved in the transaction." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if transaction is tax Inclusive" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "from_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "to_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bank Charges applied to the transaction" + }, + "user_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the User involved in the Transaction" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "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 \"required\": [\n \"transaction_type\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"from_account_id\": {\n \"description\": \"The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund.\",\n \"type\": \"string\",\n \"example\": \"460000000070003\"\n },\n \"to_account_id\": {\n \"description\": \"ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"transaction_type\": {\n \"description\": \"Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :\",\n \"type\": \"string\",\n \"example\": \"deposit\"\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"payment_mode\": {\n \"description\": \"Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.,\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"customer_id\": {\n \"description\": \"ID of the customer or vendor.\",\n \"type\": \"string\",\n \"example\": \"460000000000111\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n },\n \"currency_id\": {\n \"description\": \"The currency ID involved in the transaction.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"is_inclusive_tax\": {\n \"description\": \"Check if transaction is tax Inclusive\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"from_account_tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"to_account_tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"documents\": {\n \"description\": \"List of files to be attached to a particular transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"file_name\": {\n \"description\": \"Name of the attached file.\"\n },\n \"document_id\": {\n \"description\": \"Unique ID of the attached file.\"\n }\n }\n }\n },\n \"bank_charges\": {\n \"description\": \"Bank Charges applied to the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"user_id\": {\n \"description\": \"ID of the User involved in the Transaction\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the Tax Authority\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateBusinessContact.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateBusinessContact.json new file mode 100644 index 00000000..224b4061 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateBusinessContact.json @@ -0,0 +1,1916 @@ +{ + "name": "CreateBusinessContact", + "fully_qualified_name": "ZohoBooksApi.CreateBusinessContact@0.1.0", + "description": "Create a new business contact with comprehensive details.\n\nUse this tool to create a contact in Zoho Books with information such as name, company details, addresses, and more. This contact can be utilized for various business transactions like invoices and estimates.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization for which the contact is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_request_details", + "required": false, + "description": "JSON object containing comprehensive details to create a new contact. Includes contact name, company info, addresses, persons, tax settings, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name for the contact. It is used for searching and displaying contacts." + }, + "company_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Legal or registered contact's company name. Used for legal documents and formal communications. Max-length [200]." + }, + "website": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official website URL of the contact." + }, + "language_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Preferred language for the contact. Determines portal language. Allowed values: de,en,es,fr,it,ja,nl,pt,pt_br,sv,zh,en_gb" + }, + "contact_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Determines how the contact is treated in the system. Allowed values: customer, vendor." + }, + "customer_sub_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Additional classification for customers. Allowed values: individual, business." + }, + "credit_limit": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : The maximum credit amount that can be allowed for the customer. Once the customer's outstanding receivables reach this limit, the system will restrict the customer from creating any further transactions." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Pricebook id which is associated with the contact. Max-length [200]." + }, + "contact_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact number associated with the contact for internal tracking and identification purposes. Max-length [200]." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the auto generation contact_number is ignored or not for the contact. Allowed values: true, false." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "is_portal_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether portal access is enabled for the primary contact person. Allowed value: true and false." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency assigned to this contact. The currency_id must correspond to a valid currency configuration in the system." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment after the invoice date." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Human-readable label of payment terms displayed on invoices and other transactions. Max-length [200]." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional comments or notes about the contact." + }, + "billing_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Billing address information for the contact." + }, + "shipping_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Shipping address information for the contact." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]." + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person for business communications. Max-length [100]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Phone number of the contact person. Max-length [50]." + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number of the contact person. Max-length [50]." + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Designation of the contact person within the contact's company. Max-length [100]." + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Department of the contact person within the contact's company. Max-length [50]." + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skype username of the contact person. Max-length [50]." + }, + "is_primary_contact": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether this contact person is the primary contact. Only one per contact. Allowed values: true and false." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_sms_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether SMS text messages are allowed for the contact person." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether WhatsApp messaging is allowed for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact person should have access to the client portal. Allowed values: true and false." + } + }, + "description": null + }, + "default_templates": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice template id used for this customer while creating invoice." + }, + "estimate_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate template id used for this customer while creating estimate." + }, + "creditnote_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note template id used for this customer while creating credit note." + }, + "purchaseorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order template id used for this vendor while creating purchase order." + }, + "salesorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order template id used for this customer while creating sales order." + }, + "retainerinvoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice template id used for this customer while creating retainer invoice." + }, + "paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "invoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice email template id used for this customer while sending invoices." + }, + "estimate_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate email template id used for this customer while sending estimates." + }, + "creditnote_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note email template id used for this customer while sending credit notes." + }, + "purchaseorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order email template id used for this vendor while sending purchase order." + }, + "salesorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order email template id used for this customer while sending sales order." + }, + "retainerinvoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice email template id used for this contact while sending retainer invoice." + }, + "paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you email template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you email template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "statement_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default statement template id used for this contact while creating statement." + }, + "payment_remittance_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment remittance email template id used for this contact while sending payment remittances." + }, + "bill_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default bill template id used for this vendor while creating bill." + } + }, + "inner_properties": null, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field. It can hold any value from 1 to 10." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "description": "Custom fields of the contact." + }, + "opening_balances": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with this opening balance." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency exchange rate used to convert opening balance to organization's base currency." + }, + "opening_balance_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Initial balance amount for the contact at the time of creation." + } + }, + "description": null + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Unique identifier for the user assigned as the owner of the contact. This field specifies which user in the organization is responsible for managing the business relationship with this contact." + }, + "tax_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For GCC Edition: 15 digit Tax Registration number of a contact with Tax treatment as vat_registered,gcc_vat_registered,dz_vat_registered.
For Mexico Edition: 12 digit Tax Registration number of a contact with Tax treatment as
home_country_mexico, border_region_mexico, non_mexico.
Consumers generic RFC: XAXX010101000, Overseas generic RFC: XEXX010101000.
For Kenya Edition: 11 digit Tax Registration number of a contact with Tax treatment as vat_registered
For SouthAfrica Edition: 10 digit Tax Registration number of a contact with Tax treatment as vat_registered" + }, + "tax_exemption_certificate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Exemption Certificate number is issued by the Kenya Revenue Authority (KRA) to organizations or individuals who qualify for tax exemption" + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: Two letter country code of a contact
For Avalara: Two letter country code for the customer country, if your customer is not in US. Refer [AvaTax Codes for Countries and States][2].
For GCC Editions : Two Letter country code for the GCC Country or the UAE emirate of the contact which will be considered as place of supply.
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment of the contact.Allowed Values:
uk (A business that is located in the UK.),
eu_vat_registered (A business that is reg for VAT and trade goods between Northern Ireland and EU. This node is available only for organizations enabled for NI protocal in VAT Settings.) and
overseas (A business that is located outside UK. Pre Brexit, this was split as eu_vat_registered, eu_vat_not_registered and non_eu )." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax treatment of the contact.
Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered and dz_vat_not_registered
home_country_mexico (A business that is located within MX)
border_region_mexico (A business that is located in the northern and southern border regions in MX)
non_mexico (A business that is located outside MX).
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "tax_regime": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Regime of the contact.Allowed Values: general_legal_person, legal_entities_non_profit, resident_abroad, production_cooperative_societies, agricultural_livestock, optional_group_of_companies, coordinated, simplified_trust, wages_salaries_income, lease, property_disposal_acquisition, other_income, resident_abroad, divident_income, individual_business_professional, interest_income, income_obtaining_price, no_tax_obligation, tax_incorporation, income_through_technology_platform, simplified_trust." + }, + "legal_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official legal name of the contact as registered with tax authorities in Mexico." + }, + "is_tds_registered": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact is registered for Tax Deducted at Source (TDS) in Mexico." + }, + "place_of_contact": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or union territory code where the contact is located for Indian tax purposes. (This node identifies the place of supply and source of supply when invoices/bills are raised for the customer/vendor respectively. This is not applicable for Overseas contacts)" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15-digit GST identification number of the contact as issued by the Indian tax authorities." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the tax authority responsible for the customer's tax jurisdiction." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax exemption configuration assigned to this contact." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code identifier for the tax exemption assigned to the contact." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax authority responsible for the customer's tax jurisdiction. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group assigned to the contact. Available only when is_taxable is true." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the Tax Deducted at Source (TDS) tax configuration assigned to the contact." + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the customer is subject to tax collection. Tax-related fields are only available when this field is set to true. Allowed values: true and false." + }, + "facebook": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Facebook profile URL for the contact. Max-length [100]." + }, + "twitter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "X profile URL for the contact. Max-length [100]." + }, + "track_1099": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track a contact for 1099 reporting." + }, + "tax_id_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN." + }, + "tax_id_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID of the contact." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_contact'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "contact_request_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name for the contact. It is used for searching and displaying contacts." + }, + "company_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Legal or registered contact's company name. Used for legal documents and formal communications. Max-length [200]." + }, + "website": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official website URL of the contact." + }, + "language_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Preferred language for the contact. Determines portal language. Allowed values: de,en,es,fr,it,ja,nl,pt,pt_br,sv,zh,en_gb" + }, + "contact_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Determines how the contact is treated in the system. Allowed values: customer, vendor." + }, + "customer_sub_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Additional classification for customers. Allowed values: individual, business." + }, + "credit_limit": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : The maximum credit amount that can be allowed for the customer. Once the customer's outstanding receivables reach this limit, the system will restrict the customer from creating any further transactions." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Pricebook id which is associated with the contact. Max-length [200]." + }, + "contact_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact number associated with the contact for internal tracking and identification purposes. Max-length [200]." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the auto generation contact_number is ignored or not for the contact. Allowed values: true, false." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "is_portal_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether portal access is enabled for the primary contact person. Allowed value: true and false." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency assigned to this contact. The currency_id must correspond to a valid currency configuration in the system." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment after the invoice date." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Human-readable label of payment terms displayed on invoices and other transactions. Max-length [200]." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional comments or notes about the contact." + }, + "billing_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Billing address information for the contact." + }, + "shipping_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Shipping address information for the contact." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]." + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person for business communications. Max-length [100]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Phone number of the contact person. Max-length [50]." + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number of the contact person. Max-length [50]." + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Designation of the contact person within the contact's company. Max-length [100]." + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Department of the contact person within the contact's company. Max-length [50]." + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skype username of the contact person. Max-length [50]." + }, + "is_primary_contact": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether this contact person is the primary contact. Only one per contact. Allowed values: true and false." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_sms_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether SMS text messages are allowed for the contact person." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether WhatsApp messaging is allowed for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact person should have access to the client portal. Allowed values: true and false." + } + }, + "description": null + }, + "default_templates": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice template id used for this customer while creating invoice." + }, + "estimate_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate template id used for this customer while creating estimate." + }, + "creditnote_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note template id used for this customer while creating credit note." + }, + "purchaseorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order template id used for this vendor while creating purchase order." + }, + "salesorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order template id used for this customer while creating sales order." + }, + "retainerinvoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice template id used for this customer while creating retainer invoice." + }, + "paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "invoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice email template id used for this customer while sending invoices." + }, + "estimate_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate email template id used for this customer while sending estimates." + }, + "creditnote_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note email template id used for this customer while sending credit notes." + }, + "purchaseorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order email template id used for this vendor while sending purchase order." + }, + "salesorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order email template id used for this customer while sending sales order." + }, + "retainerinvoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice email template id used for this contact while sending retainer invoice." + }, + "paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you email template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you email template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "statement_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default statement template id used for this contact while creating statement." + }, + "payment_remittance_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment remittance email template id used for this contact while sending payment remittances." + }, + "bill_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default bill template id used for this vendor while creating bill." + } + }, + "inner_properties": null, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field. It can hold any value from 1 to 10." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "description": "Custom fields of the contact." + }, + "opening_balances": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with this opening balance." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency exchange rate used to convert opening balance to organization's base currency." + }, + "opening_balance_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Initial balance amount for the contact at the time of creation." + } + }, + "description": null + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Unique identifier for the user assigned as the owner of the contact. This field specifies which user in the organization is responsible for managing the business relationship with this contact." + }, + "tax_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For GCC Edition: 15 digit Tax Registration number of a contact with Tax treatment as vat_registered,gcc_vat_registered,dz_vat_registered.
For Mexico Edition: 12 digit Tax Registration number of a contact with Tax treatment as
home_country_mexico, border_region_mexico, non_mexico.
Consumers generic RFC: XAXX010101000, Overseas generic RFC: XEXX010101000.
For Kenya Edition: 11 digit Tax Registration number of a contact with Tax treatment as vat_registered
For SouthAfrica Edition: 10 digit Tax Registration number of a contact with Tax treatment as vat_registered" + }, + "tax_exemption_certificate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Exemption Certificate number is issued by the Kenya Revenue Authority (KRA) to organizations or individuals who qualify for tax exemption" + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: Two letter country code of a contact
For Avalara: Two letter country code for the customer country, if your customer is not in US. Refer [AvaTax Codes for Countries and States][2].
For GCC Editions : Two Letter country code for the GCC Country or the UAE emirate of the contact which will be considered as place of supply.
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment of the contact.Allowed Values:
uk (A business that is located in the UK.),
eu_vat_registered (A business that is reg for VAT and trade goods between Northern Ireland and EU. This node is available only for organizations enabled for NI protocal in VAT Settings.) and
overseas (A business that is located outside UK. Pre Brexit, this was split as eu_vat_registered, eu_vat_not_registered and non_eu )." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax treatment of the contact.
Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered and dz_vat_not_registered
home_country_mexico (A business that is located within MX)
border_region_mexico (A business that is located in the northern and southern border regions in MX)
non_mexico (A business that is located outside MX).
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "tax_regime": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Regime of the contact.Allowed Values: general_legal_person, legal_entities_non_profit, resident_abroad, production_cooperative_societies, agricultural_livestock, optional_group_of_companies, coordinated, simplified_trust, wages_salaries_income, lease, property_disposal_acquisition, other_income, resident_abroad, divident_income, individual_business_professional, interest_income, income_obtaining_price, no_tax_obligation, tax_incorporation, income_through_technology_platform, simplified_trust." + }, + "legal_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official legal name of the contact as registered with tax authorities in Mexico." + }, + "is_tds_registered": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact is registered for Tax Deducted at Source (TDS) in Mexico." + }, + "place_of_contact": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or union territory code where the contact is located for Indian tax purposes. (This node identifies the place of supply and source of supply when invoices/bills are raised for the customer/vendor respectively. This is not applicable for Overseas contacts)" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15-digit GST identification number of the contact as issued by the Indian tax authorities." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the tax authority responsible for the customer's tax jurisdiction." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax exemption configuration assigned to this contact." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code identifier for the tax exemption assigned to the contact." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax authority responsible for the customer's tax jurisdiction. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group assigned to the contact. Available only when is_taxable is true." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the Tax Deducted at Source (TDS) tax configuration assigned to the contact." + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the customer is subject to tax collection. Tax-related fields are only available when this field is set to true. Allowed values: true and false." + }, + "facebook": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Facebook profile URL for the contact. Max-length [100]." + }, + "twitter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "X profile URL for the contact. Max-length [100]." + }, + "track_1099": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track a contact for 1099 reporting." + }, + "tax_id_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN." + }, + "tax_id_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID of the contact." + } + }, + "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 \"required\": [\n \"contact_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"contact_name\": {\n \"description\": \"Display name for the contact. It is used for searching and displaying contacts.\",\n \"type\": \"string\",\n \"example\": \"Bowman and Co\"\n },\n \"company_name\": {\n \"description\": \"Legal or registered contact's company name. Used for legal documents and formal communications. Max-length [200].\",\n \"type\": \"string\",\n \"example\": \"Bowman and Co\"\n },\n \"website\": {\n \"description\": \"Official website URL of the contact.\",\n \"type\": \"string\",\n \"example\": \"www.bowmanfurniture.com\"\n },\n \"language_code\": {\n \"description\": \"Preferred language for the contact. Determines portal language. Allowed values: de,en,es,fr,it,ja,nl,pt,pt_br,sv,zh,en_gb\",\n \"type\": \"string\"\n },\n \"contact_type\": {\n \"description\": \"Determines how the contact is treated in the system. Allowed values: customer, vendor.\",\n \"type\": \"string\",\n \"example\": \"customer\"\n },\n \"customer_sub_type\": {\n \"description\": \"For Customer Only : Additional classification for customers. Allowed values: individual, business.\",\n \"type\": \"string\",\n \"example\": \"business\"\n },\n \"credit_limit\": {\n \"description\": \"For Customer Only : The maximum credit amount that can be allowed for the customer. Once the customer's outstanding receivables reach this limit, the system will restrict the customer from creating any further transactions.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1000\n },\n \"pricebook_id\": {\n \"description\": \"Pricebook id which is associated with the contact. Max-length [200].\",\n \"type\": \"string\",\n \"example\": 460000000000123\n },\n \"contact_number\": {\n \"description\": \"Contact number associated with the contact for internal tracking and identification purposes. Max-length [200].\",\n \"type\": \"string\",\n \"example\": \"CNT-001234\"\n },\n \"ignore_auto_number_generation\": {\n \"description\": \"Indicates whether the auto generation contact_number is ignored or not for the contact. Allowed values: true, false.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"tags\": {\n \"description\": \"Filter all your reports based on the tag\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 462000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 462000000002670\n }\n }\n }\n },\n \"is_portal_enabled\": {\n \"description\": \"Indicates whether portal access is enabled for the primary contact person. Allowed value: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency assigned to this contact. The currency_id must correspond to a valid currency configuration in the system.\",\n \"type\": \"string\",\n \"example\": 460000000000097\n },\n \"payment_terms\": {\n \"description\": \"Number of days allowed for payment after the invoice date.\",\n \"type\": \"integer\",\n \"example\": 15\n },\n \"payment_terms_label\": {\n \"description\": \"Human-readable label of payment terms displayed on invoices and other transactions. Max-length [200].\",\n \"type\": \"string\",\n \"example\": \"Net 15\"\n },\n \"notes\": {\n \"description\": \"Additional comments or notes about the contact.\",\n \"type\": \"string\",\n \"example\": \"Payment option : Through check\"\n },\n \"billing_address\": {\n \"description\": \"Billing address information for the contact.\",\n \"type\": \"object\",\n \"properties\": {\n \"attention\": {\n \"description\": \"Attention for proper delivery and routing of business correspondence. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Mr.John\"\n },\n \"address\": {\n \"description\": \"Street 1 address for the contact. Max-length [500].\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd\"\n },\n \"street2\": {\n \"description\": \"Street 2 address for the contact. Max-length [255].\",\n \"type\": \"string\",\n \"example\": \"Suite 310\"\n },\n \"state_code\": {\n \"description\": \"State or province code for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"city\": {\n \"description\": \"City name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Postal or ZIP code for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Fax number for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n },\n \"phone\": {\n \"description\": \"The contact phone number associated with the address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n }\n }\n },\n \"shipping_address\": {\n \"description\": \"Shipping address information for the contact.\",\n \"type\": \"object\",\n \"properties\": {\n \"attention\": {\n \"description\": \"Attention for proper delivery and routing of business correspondence. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Mr.John\"\n },\n \"address\": {\n \"description\": \"Street 1 address for the contact. Max-length [500].\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd\"\n },\n \"street2\": {\n \"description\": \"Street 2 address for the contact. Max-length [255].\",\n \"type\": \"string\",\n \"example\": \"Suite 310\"\n },\n \"state_code\": {\n \"description\": \"State or province code for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"city\": {\n \"description\": \"City name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Postal or ZIP code for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Fax number for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n },\n \"phone\": {\n \"description\": \"The contact phone number associated with the address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n }\n }\n },\n \"contact_persons\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"salutation\": {\n \"description\": \"Salutation for the contact. Max-length [25]\",\n \"type\": \"string\",\n \"example\": \"Mr\"\n },\n \"first_name\": {\n \"description\": \"First name of the contact person. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Will\"\n },\n \"last_name\": {\n \"description\": \"Last name of the contact person. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Smith\"\n },\n \"email\": {\n \"description\": \"Email address of the contact person for business communications. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"willsmith@bowmanfurniture.com\"\n },\n \"phone\": {\n \"description\": \"Phone number of the contact person. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n },\n \"mobile\": {\n \"description\": \"Mobile number of the contact person. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-4054439562\"\n },\n \"designation\": {\n \"description\": \"Designation of the contact person within the contact's company. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Sales Executive\"\n },\n \"department\": {\n \"description\": \"Department of the contact person within the contact's company. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"Sales and Marketing\"\n },\n \"skype\": {\n \"description\": \"Skype username of the contact person. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"Zoho\"\n },\n \"is_primary_contact\": {\n \"description\": \"Indicates whether this contact person is the primary contact. Only one per contact. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_sms_enabled\": {\n \"description\": \"Whether SMS text messages are allowed for the contact person.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"SMS integration\"\n ]\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Whether WhatsApp messaging is allowed for the contact person.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n },\n \"enable_portal\": {\n \"description\": \"Indicates whether the contact person should have access to the client portal. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n }\n },\n \"default_templates\": {\n \"type\": \"object\",\n \"properties\": {\n \"invoice_template_id\": {\n \"description\": \"Default invoice template id used for this customer while creating invoice.\",\n \"type\": \"string\",\n \"example\": 460000000052069\n },\n \"estimate_template_id\": {\n \"description\": \"Default estimate template id used for this customer while creating estimate.\",\n \"type\": \"string\",\n \"example\": 460000000000179\n },\n \"creditnote_template_id\": {\n \"description\": \"Default credit note template id used for this customer while creating credit note.\",\n \"type\": \"string\",\n \"example\": 460000000000211\n },\n \"purchaseorder_template_id\": {\n \"description\": \"Default purchase order template id used for this vendor while creating purchase order.\",\n \"type\": \"string\",\n \"example\": 460000000000213\n },\n \"salesorder_template_id\": {\n \"description\": \"Default sales order template id used for this customer while creating sales order.\",\n \"type\": \"string\",\n \"example\": 460000000000214\n },\n \"retainerinvoice_template_id\": {\n \"description\": \"Default retainer invoice template id used for this customer while creating retainer invoice.\",\n \"type\": \"string\",\n \"example\": 460000000000215\n },\n \"paymentthankyou_template_id\": {\n \"description\": \"Default payment thank you template id used for this contact while sending payment acknowledgment.\",\n \"type\": \"string\",\n \"example\": 460000000000216\n },\n \"retainerinvoice_paymentthankyou_template_id\": {\n \"description\": \"Default retainer invoice payment thank you template id used for this customer while sending payment acknowledgment for retainer invoices.\",\n \"type\": \"string\",\n \"example\": 460000000000217\n },\n \"invoice_email_template_id\": {\n \"description\": \"Default invoice email template id used for this customer while sending invoices.\",\n \"type\": \"string\",\n \"example\": 460000000052071\n },\n \"estimate_email_template_id\": {\n \"description\": \"Default estimate email template id used for this customer while sending estimates.\",\n \"type\": \"string\",\n \"example\": 460000000052073\n },\n \"creditnote_email_template_id\": {\n \"description\": \"Default credit note email template id used for this customer while sending credit notes.\",\n \"type\": \"string\",\n \"example\": 460000000052075\n },\n \"purchaseorder_email_template_id\": {\n \"description\": \"Default purchase order email template id used for this vendor while sending purchase order.\",\n \"type\": \"string\",\n \"example\": 460000000000218\n },\n \"salesorder_email_template_id\": {\n \"description\": \"Default sales order email template id used for this customer while sending sales order.\",\n \"type\": \"string\",\n \"example\": 460000000000219\n },\n \"retainerinvoice_email_template_id\": {\n \"description\": \"Default retainer invoice email template id used for this contact while sending retainer invoice.\",\n \"type\": \"string\",\n \"example\": 460000000000220\n },\n \"paymentthankyou_email_template_id\": {\n \"description\": \"Default payment thank you email template id used for this contact while sending payment acknowledgment.\",\n \"type\": \"string\",\n \"example\": 460000000000221\n },\n \"retainerinvoice_paymentthankyou_email_template_id\": {\n \"description\": \"Default retainer invoice payment thank you email template id used for this customer while sending payment acknowledgment for retainer invoices.\",\n \"type\": \"string\",\n \"example\": 460000000000222\n },\n \"statement_template_id\": {\n \"description\": \"Default statement template id used for this contact while creating statement.\",\n \"type\": \"string\",\n \"example\": 460000000000101\n },\n \"payment_remittance_email_template_id\": {\n \"description\": \"Default payment remittance email template id used for this contact while sending payment remittances.\",\n \"type\": \"string\",\n \"example\": 460000000000102\n },\n \"bill_template_id\": {\n \"description\": \"Default bill template id used for this vendor while creating bill.\",\n \"type\": \"string\",\n \"example\": 460000000000103\n }\n }\n },\n \"custom_fields\": {\n \"description\": \"Custom fields of the contact.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field. It can hold any value from 1 to 10.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": \"GBGD078\"\n }\n }\n }\n },\n \"opening_balances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"location_id\": {\n \"description\": \"Unique identifier for the business location associated with this opening balance.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"exchange_rate\": {\n \"description\": \"Currency exchange rate used to convert opening balance to organization's base currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"opening_balance_amount\": {\n \"description\": \"Initial balance amount for the contact at the time of creation.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1200\n }\n }\n }\n },\n \"vat_reg_no\": {\n \"description\": \"For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"owner_id\": {\n \"description\": \"For Customer Only : Unique identifier for the user assigned as the owner of the contact. This field specifies which user in the organization is responsible for managing the business relationship with this contact.\",\n \"type\": \"string\",\n \"example\": 460000000016051\n },\n \"tax_reg_no\": {\n \"description\": \"For GCC Edition: 15 digit Tax Registration number of a contact with Tax treatment as vat_registered,gcc_vat_registered,dz_vat_registered.
For Mexico Edition: 12 digit Tax Registration number of a contact with Tax treatment as
home_country_mexico, border_region_mexico, non_mexico.
Consumers generic RFC: XAXX010101000, Overseas generic RFC: XEXX010101000.
For Kenya Edition: 11 digit Tax Registration number of a contact with Tax treatment as vat_registered
For SouthAfrica Edition: 10 digit Tax Registration number of a contact with Tax treatment as vat_registered\",\n \"type\": \"string\",\n \"example\": 12345678912345,\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_certificate_number\": {\n \"description\": \"Tax Exemption Certificate number is issued by the Kenya Revenue Authority (KRA) to organizations or individuals who qualify for tax exemption\",\n \"type\": \"string\",\n \"example\": \"KRAEXM0043310521\",\n \"x-node_available_in\": [\n \"ke\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"country_code\": {\n \"description\": \"For UK Edition: Two letter country code of a contact
For Avalara: Two letter country code for the customer country, if your customer is not in US. Refer [AvaTax Codes for Countries and States][2].
For GCC Editions : Two Letter country code for the GCC Country or the UAE emirate of the contact which will be considered as place of supply.
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"gcc\",\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment of the contact.Allowed Values:
uk (A business that is located in the UK.),
eu_vat_registered (A business that is reg for VAT and trade goods between Northern Ireland and EU. This node is available only for organizations enabled for NI protocal in VAT Settings.) and
overseas (A business that is located outside UK. Pre Brexit, this was split as eu_vat_registered, eu_vat_not_registered and non_eu ).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"Tax treatment of the contact.
Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered and dz_vat_not_registered
home_country_mexico (A business that is located within MX)
border_region_mexico (A business that is located in the northern and southern border regions in MX)
non_mexico (A business that is located outside MX).
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_regime\": {\n \"description\": \"Tax Regime of the contact.Allowed Values: general_legal_person, legal_entities_non_profit, resident_abroad, production_cooperative_societies, agricultural_livestock, optional_group_of_companies, coordinated, simplified_trust, wages_salaries_income, lease, property_disposal_acquisition, other_income, resident_abroad, divident_income, individual_business_professional, interest_income, income_obtaining_price, no_tax_obligation, tax_incorporation, income_through_technology_platform, simplified_trust.\",\n \"type\": \"string\",\n \"example\": \"general_legal_person\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"legal_name\": {\n \"description\": \"Official legal name of the contact as registered with tax authorities in Mexico.\",\n \"type\": \"string\",\n \"example\": \"ESCUELA KEMPER URGATE\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_tds_registered\": {\n \"description\": \"Indicates whether the contact is registered for Tax Deducted at Source (TDS) in Mexico.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_contact\": {\n \"description\": \"State or union territory code where the contact is located for Indian tax purposes. (This node identifies the place of supply and source of supply when invoices/bills are raised for the customer/vendor respectively. This is not applicable for Overseas contacts)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15-digit GST identification number of the contact as issued by the Indian tax authorities.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Display name of the tax authority responsible for the customer's tax jurisdiction.\",\n \"type\": \"string\"\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique identifier for the tax exemption configuration assigned to this contact.\",\n \"type\": \"string\",\n \"example\": 11149000000061054,\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"au\",\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code identifier for the tax exemption assigned to the contact.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"au\",\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"Unique identifier for the tax authority responsible for the customer's tax jurisdiction. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": 11149000000061052,\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax or tax group assigned to the contact. Available only when is_taxable is true.\",\n \"type\": \"string\",\n \"example\": 11149000000061058,\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tds_tax_id\": {\n \"description\": \"Unique identifier for the Tax Deducted at Source (TDS) tax configuration assigned to the contact.\",\n \"type\": \"string\",\n \"example\": \"982000000557012\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_taxable\": {\n \"description\": \"Indicates whether the customer is subject to tax collection. Tax-related fields are only available when this field is set to true. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"au\",\n \"in\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"facebook\": {\n \"description\": \"Facebook profile URL for the contact. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"zoho\"\n },\n \"twitter\": {\n \"description\": \"X profile URL for the contact. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"zoho\"\n },\n \"track_1099\": {\n \"description\": \"Boolean to track a contact for 1099 reporting.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id_type\": {\n \"description\": \"Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id_value\": {\n \"description\": \"Tax ID of the contact.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateChartOfAccount.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateChartOfAccount.json new file mode 100644 index 00000000..f20781be --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateChartOfAccount.json @@ -0,0 +1,350 @@ +{ + "name": "CreateChartOfAccount", + "fully_qualified_name": "ZohoBooksApi.CreateChartOfAccount@0.1.0", + "description": "Creates an account with a specified account type.\n\nThis tool is used to create a new account within the chart of accounts by specifying the type of account desired. It is suitable when setting up financial frameworks or managing accounting structures.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the account is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_details", + "required": false, + "description": "JSON object containing details for the account creation, including name, code, type, and other optional attributes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the account" + }, + "account_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code Associated with the Account" + }, + "account_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the account. Allowed Values: other_asset, other_current_asset, intangible_asset, right_to_use_asset,financial_asset,contingent_asset,contract_asset, cash, bank, fixed_asset, other_current_liability, contract_liability , refund_liability, credit_card, long_term_liability, loans_and_borrowing ,lease_liability ,employee_benefit_liability ,contingent_liability ,financial_liability , other_liability, equity, income,finance_income ,other_comprehensive_income , other_income, expense, manufacturing_expense ,impairment_expense ,depreciation_expense ,employee_benefit_expense ,lease_expense ,finance_expense ,tax_expense , cost_of_goods_sold, other_expense, accounts_receivable and accounts_payable." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account currency." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the account" + }, + "show_on_dashboard": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "can_show_in_ze": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "include_in_vat_return": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to include an account in VAT returns." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "parent_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Parent Account" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_chart_of_account'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/chartofaccounts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "account_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the account" + }, + "account_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code Associated with the Account" + }, + "account_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the account. Allowed Values: other_asset, other_current_asset, intangible_asset, right_to_use_asset,financial_asset,contingent_asset,contract_asset, cash, bank, fixed_asset, other_current_liability, contract_liability , refund_liability, credit_card, long_term_liability, loans_and_borrowing ,lease_liability ,employee_benefit_liability ,contingent_liability ,financial_liability , other_liability, equity, income,finance_income ,other_comprehensive_income , other_income, expense, manufacturing_expense ,impairment_expense ,depreciation_expense ,employee_benefit_expense ,lease_expense ,finance_expense ,tax_expense , cost_of_goods_sold, other_expense, accounts_receivable and accounts_payable." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account currency." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the account" + }, + "show_on_dashboard": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "can_show_in_ze": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "include_in_vat_return": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to include an account in VAT returns." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "parent_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Parent Account" + } + }, + "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 \"account_name\": {\n \"description\": \"Name of the account\",\n \"type\": \"string\",\n \"example\": \"Notes Payable\"\n },\n \"account_code\": {\n \"description\": \"Code Associated with the Account\",\n \"type\": \"string\"\n },\n \"account_type\": {\n \"description\": \"Type of the account. Allowed Values: other_asset, other_current_asset, intangible_asset, right_to_use_asset,financial_asset,contingent_asset,contract_asset, cash, bank, fixed_asset, other_current_liability, contract_liability , refund_liability, credit_card, long_term_liability, loans_and_borrowing ,lease_liability ,employee_benefit_liability ,contingent_liability ,financial_liability , other_liability, equity, income,finance_income ,other_comprehensive_income , other_income, expense, manufacturing_expense ,impairment_expense ,depreciation_expense ,employee_benefit_expense ,lease_expense ,finance_expense ,tax_expense , cost_of_goods_sold, other_expense, accounts_receivable and accounts_payable.\",\n \"type\": \"string\",\n \"example\": \"long_term_liability\"\n },\n \"currency_id\": {\n \"description\": \"ID of the account currency.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"description\": {\n \"description\": \"Description of the account\",\n \"type\": \"string\",\n \"example\": \"A Liability account which can be paid off in a time period longer than one year.\"\n },\n \"show_on_dashboard\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"can_show_in_ze\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"include_in_vat_return\": {\n \"description\": \"Boolean to include an account in VAT returns.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"460000000080163\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"parent_account_id\": {\n \"description\": \"ID of the Parent Account\",\n \"type\": \"string\",\n \"example\": \"460000000009097\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateContactPerson.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateContactPerson.json new file mode 100644 index 00000000..e000edb2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateContactPerson.json @@ -0,0 +1,366 @@ +{ + "name": "CreateContactPerson", + "fully_qualified_name": "ZohoBooksApi.CreateContactPerson@0.1.0", + "description": "Create a contact person for a contact in Zoho Books.\n\nUse this tool to add a new contact person associated with a contact in Zoho Books. It facilitates managing additional contact person details within the platform.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization where the contact person will be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_person_details", + "required": false, + "description": "Details of the contact person, including contact ID, name, email, phone, and preferences. Provide the data in JSON format.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact id of the contact" + }, + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]" + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person. Max-length [100]" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Max-length [50]" + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Max-length [50]" + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "skype address. Max-length [50]" + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "designation of a person. Max-length [50]" + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "department on which a person belongs. Max-length [50]" + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "option to enable the portal access. allowed values true,false" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_contact_person'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/contactpersons", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "contact_person_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact id of the contact" + }, + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]" + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person. Max-length [100]" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Max-length [50]" + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Max-length [50]" + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "skype address. Max-length [50]" + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "designation of a person. Max-length [50]" + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "department on which a person belongs. Max-length [50]" + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "option to enable the portal access. allowed values true,false" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + } + }, + "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 \"required\": [\n \"first_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"contact_id\": {\n \"description\": \"Contact id of the contact\",\n \"type\": \"string\",\n \"example\": 460000000026049\n },\n \"salutation\": {\n \"description\": \"Salutation for the contact. Max-length [25]\",\n \"type\": \"string\",\n \"example\": \"Mr\"\n },\n \"first_name\": {\n \"description\": \"First name of the contact person. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Will\"\n },\n \"last_name\": {\n \"description\": \"Last name of the contact person. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Smith\"\n },\n \"email\": {\n \"description\": \"Email address of the contact person. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"willsmith@bowmanfurniture.com\"\n },\n \"phone\": {\n \"description\": \"Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n },\n \"mobile\": {\n \"description\": \"Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-4054439562\"\n },\n \"skype\": {\n \"description\": \"skype address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"zoho\"\n },\n \"designation\": {\n \"description\": \"designation of a person. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"Sales Engineer\"\n },\n \"department\": {\n \"description\": \"department on which a person belongs. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"Sales\"\n },\n \"enable_portal\": {\n \"description\": \"option to enable the portal access. allowed values true,false\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCreditNote.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCreditNote.json new file mode 100644 index 00000000..ab3ef14f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCreditNote.json @@ -0,0 +1,1076 @@ +{ + "name": "CreateCreditNote", + "fully_qualified_name": "ZohoBooksApi.CreateCreditNote@0.1.0", + "description": "Create a new credit note for customer adjustments.\n\nUse this tool to create a credit note when issuing credits to customers for reasons such as returned items, overpayments, or necessary adjustments. It supports multi-currency, custom line items, tax calculations, and workflows.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the credit note is being created. Required for identifying the correct entity within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_id", + "required": false, + "description": "Invoice ID for the required invoice to associate with the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "credit_note_details", + "required": false, + "description": "JSON object containing detailed fields for the credit note. Includes customer ID, currency ID, contact persons, date, line items, tax details, and additional notes or terms.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer contact. Retrieve customer IDs from the Get Customers API endpoint in the contacts section. This ID links the credit note to the specific customer record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the credit note. Can differ from customer currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "is_draft": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to create the credit note in draft status. Draft credit notes are not finalized and can be modified before sending to customers." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "invoice_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice line item that this credit note line item references. Use this when creating a credit note for a specific invoice line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique code or SKU for the line item. Used for product identification and inventory tracking. Helps distinguish between different variants of the same product." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "type": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the credit note line item. Numeric value indicating the line item type (e.g., 1 for product, 2 for service). Used for categorization and reporting purposes." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the chart of accounts entry. Displays the account name for reference and reporting purposes. Should match the account_id provided." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID to denote the TDS tax associated to the creditnote" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for the line item. Standard values: goods or services. For South Africa: service, goods, capital_service, and capital_goods." + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "serial_numbers": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Serial numbers of the items being credited. Used for tracking specific units of inventory or equipment. Important for warranty and return tracking." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the project associated with the line item. Links the credit to a specific project for project-based accounting and reporting." + } + }, + "description": "Array of line items for the credit note. Each line item represents a product or service being credited to the customer." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "creditnote_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique credit note number displayed in the interface. Auto-generated with CN prefix unless ignore_auto_number_generation is true. Max-Length [100]" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the credit note .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type.
Allowed values: credit_note, debit_note, return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to provide a custom credit note number instead of auto-generated CN prefix. When true, you must specify creditnote_number manually." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional fields for the Credit-Notes." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the credit note. Displayed on the credit note document for customer reference. Max-length [5000]" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions displayed on the credit note document. Include payment terms, return policies, or other business conditions. Max-length [10000]" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the credit note PDF template. Retrieve template IDs from the List Credit Note Templates API endpoint. Determines the visual layout and branding of the credit note document." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "use_custom_credit_note_number", + "required": false, + "description": "Set to true to provide your own credit note number, bypassing auto-numbering.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true if you need to provide your own credit note number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_credit_note'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_id", + "description": "Invoice ID of the required invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "use_custom_credit_note_number", + "description": "Set to true if you need to provide your own credit note number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true if you need to provide your own credit note number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "credit_note_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer contact. Retrieve customer IDs from the Get Customers API endpoint in the contacts section. This ID links the credit note to the specific customer record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the credit note. Can differ from customer currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "is_draft": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to create the credit note in draft status. Draft credit notes are not finalized and can be modified before sending to customers." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "invoice_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice line item that this credit note line item references. Use this when creating a credit note for a specific invoice line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique code or SKU for the line item. Used for product identification and inventory tracking. Helps distinguish between different variants of the same product." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "type": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the credit note line item. Numeric value indicating the line item type (e.g., 1 for product, 2 for service). Used for categorization and reporting purposes." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the chart of accounts entry. Displays the account name for reference and reporting purposes. Should match the account_id provided." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID to denote the TDS tax associated to the creditnote" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for the line item. Standard values: goods or services. For South Africa: service, goods, capital_service, and capital_goods." + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "serial_numbers": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Serial numbers of the items being credited. Used for tracking specific units of inventory or equipment. Important for warranty and return tracking." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the project associated with the line item. Links the credit to a specific project for project-based accounting and reporting." + } + }, + "description": "Array of line items for the credit note. Each line item represents a product or service being credited to the customer." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "creditnote_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique credit note number displayed in the interface. Auto-generated with CN prefix unless ignore_auto_number_generation is true. Max-Length [100]" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the credit note .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type.
Allowed values: credit_note, debit_note, return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to provide a custom credit note number instead of auto-generated CN prefix. When true, you must specify creditnote_number manually." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional fields for the Credit-Notes." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the credit note. Displayed on the credit note document for customer reference. Max-length [5000]" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions displayed on the credit note document. Include payment terms, return policies, or other business conditions. Max-length [10000]" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the credit note PDF template. Retrieve template IDs from the List Credit Note Templates API endpoint. Determines the visual layout and branding of the credit note document." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"date\",\n \"creditnote_number\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier for the customer contact. Retrieve customer IDs from the Get Customers API endpoint in the contacts section. This ID links the credit note to the specific customer record.\",\n \"type\": \"string\",\n \"example\": \"903000000000099\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the credit note. Can differ from customer currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section.\",\n \"type\": \"string\",\n \"example\": \"982000000567240\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"date\": {\n \"description\": \"The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations.\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"is_draft\": {\n \"description\": \"Set to true to create the credit note in draft status. Draft credit notes are not finalized and can be modified before sending to customers.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs.\",\n \"type\": \"string\",\n \"example\": \"5.5\"\n },\n \"line_items\": {\n \"description\": \"Array of line items for the credit note. Each line item represents a product or service being credited to the customer.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service.\",\n \"type\": \"string\",\n \"example\": \"90300000081501\"\n },\n \"invoice_id\": {\n \"description\": \"Invoice ID of the required invoice.\",\n \"type\": \"string\",\n \"example\": \"90300000079426\"\n },\n \"invoice_item_id\": {\n \"description\": \"Unique identifier of the invoice line item that this credit note line item references. Use this when creating a credit note for a specific invoice line item.\",\n \"type\": \"string\",\n \"example\": \"982000000567021\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n },\n \"code\": {\n \"description\": \"Unique code or SKU for the line item. Used for product identification and inventory tracking. Helps distinguish between different variants of the same product.\",\n \"type\": \"string\",\n \"example\": \"basic-monthly\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"Basic Monthly\"\n },\n \"type\": {\n \"description\": \"Type of the credit note line item. Numeric value indicating the line item type (e.g., 1 for product, 2 for service). Used for categorization and reporting purposes.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes.\",\n \"type\": \"string\",\n \"example\": \"903000000000388\"\n },\n \"account_name\": {\n \"description\": \"Name of the chart of accounts entry. Displays the account name for reference and reporting purposes. Should match the account_id provided.\",\n \"type\": \"string\",\n \"example\": \"Sales\"\n },\n \"quantity\": {\n \"description\": \"Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item.\",\n \"type\": \"integer\",\n \"format\": \"int32\",\n \"example\": 1\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item.\",\n \"type\": \"string\",\n \"example\": \"903000000000356\"\n },\n \"tds_tax_id\": {\n \"description\": \"Unique ID to denote the TDS tax associated to the creditnote\",\n \"type\": \"string\",\n \"example\": \"903000000000357\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of product or service for the line item. Standard values: goods or services. For South Africa: service, goods, capital_service, and capital_goods.\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"box\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"serial_numbers\": {\n \"description\": \"Serial numbers of the items being credited. Used for tracking specific units of inventory or equipment. Important for warranty and return tracking.\",\n \"type\": \"string\"\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"project_id\": {\n \"description\": \"Unique identifier for the project associated with the line item. Links the credit to a specific project for project-based accounting and reporting.\",\n \"type\": \"string\",\n \"example\": 90300000087378\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"creditnote_number\": {\n \"description\": \"Unique credit note number displayed in the interface. Auto-generated with CN prefix unless ignore_auto_number_generation is true. Max-Length [100]\",\n \"type\": \"string\",\n \"example\": \"CN-29\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the credit note .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_usage\": {\n \"description\": \"Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll.\",\n \"type\": \"string\",\n \"example\": \"acquisition_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_reference_type\": {\n \"description\": \"Choose CFDI Reference Type.
Allowed values: credit_note, debit_note, return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance.\",\n \"type\": \"string\",\n \"example\": \"return_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"ignore_auto_number_generation\": {\n \"description\": \"Set to true to provide a custom credit note number instead of auto-generated CN prefix. When true, you must specify creditnote_number manually.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"reference_number\": {\n \"description\": \"Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"custom_fields\": {\n \"description\": \"Additional fields for the Credit-Notes.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"notes\": {\n \"description\": \"Additional notes or comments for the credit note. Displayed on the credit note document for customer reference. Max-length [5000]\",\n \"type\": \"string\",\n \"example\": \"Offer for the referral\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions displayed on the credit note document. Include payment terms, return policies, or other business conditions. Max-length [10000]\",\n \"type\": \"string\",\n \"example\": \"\"\n },\n \"template_id\": {\n \"description\": \"Unique identifier for the credit note PDF template. Retrieve template IDs from the List Credit Note Templates API endpoint. Determines the visual layout and branding of the credit note document.\",\n \"type\": \"string\",\n \"example\": \"90300000001336\"\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item.\",\n \"type\": \"string\",\n \"example\": \"903000000000356\"\n },\n \"tax_authority_id\": {\n \"description\": \"Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"overseas\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": \"fasle\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCurrency.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCurrency.json new file mode 100644 index 00000000..dfdd37ae --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCurrency.json @@ -0,0 +1,220 @@ +{ + "name": "CreateCurrency", + "fully_qualified_name": "ZohoBooksApi.CreateCurrency@0.1.0", + "description": "Create a currency for transactions in Zoho Books.\n\nUse this tool to add a new currency for use in transactions within Zoho Books. This is useful when expanding the supported currencies for financial activities.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the currency is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_details", + "required": false, + "description": "JSON object with currency_code, currency_symbol, price_precision, and currency_format for the new currency.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique standard code for the currency. Max-len [100]" + }, + "currency_symbol": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique symbol for the currency. Max-len [4]" + }, + "price_precision": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The precision for the price" + }, + "currency_format": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The format for the currency to be displayed. Max-len [100]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_currency'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "currency_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique standard code for the currency. Max-len [100]" + }, + "currency_symbol": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique symbol for the currency. Max-len [4]" + }, + "price_precision": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The precision for the price" + }, + "currency_format": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The format for the currency to be displayed. Max-len [100]" + } + }, + "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 \"required\": [\n \"currency_code\",\n \"currency_format\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"currency_code\": {\n \"description\": \"A unique standard code for the currency. Max-len [100]\",\n \"type\": \"string\",\n \"example\": \"AUD\"\n },\n \"currency_symbol\": {\n \"description\": \"A unique symbol for the currency. Max-len [4]\",\n \"type\": \"string\",\n \"example\": \"$\"\n },\n \"price_precision\": {\n \"description\": \"The precision for the price\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"currency_format\": {\n \"description\": \"The format for the currency to be displayed. Max-len [100]\",\n \"type\": \"string\",\n \"example\": \"1,234,567.89\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCurrencyAdjustment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCurrencyAdjustment.json new file mode 100644 index 00000000..7436e94c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCurrencyAdjustment.json @@ -0,0 +1,253 @@ +{ + "name": "CreateCurrencyAdjustment", + "fully_qualified_name": "ZohoBooksApi.CreateCurrencyAdjustment@0.1.0", + "description": "Create a base currency adjustment.\n\nThis tool creates an adjustment to the base currency based on the provided information. It is used to update and manage currency values in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required for currency adjustments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_identifiers", + "required": true, + "description": "Comma-separated IDs of accounts for currency adjustments in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the accounts for which base currency adjustments need to be posted." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_ids" + }, + { + "name": "currency_adjustment_details", + "required": false, + "description": "JSON object with details like currency_id, adjustment_date, exchange_rate, and notes for the base currency adjustment.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of currency for which we need to post adjustment." + }, + "adjustment_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of adjustment." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for base currency adjustment." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_base_currency_adjustment'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/basecurrencyadjustment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_ids", + "tool_parameter_name": "account_identifiers", + "description": "ID of the accounts for which base currency adjustments need to be posted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the accounts for which base currency adjustments need to be posted." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "currency_adjustment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of currency for which we need to post adjustment." + }, + "adjustment_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of adjustment." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for base currency adjustment." + } + }, + "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 \"required\": [\n \"currency_id\",\n \"adjustment_date\",\n \"exchange_rate\",\n \"notes\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"currency_id\": {\n \"description\": \"ID of currency for which we need to post adjustment.\",\n \"type\": \"string\",\n \"example\": \"460000000000109\"\n },\n \"adjustment_date\": {\n \"description\": \"Date of adjustment.\",\n \"type\": \"string\",\n \"example\": \"2013-09-05\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate of the currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"notes\": {\n \"description\": \"Notes for base currency adjustment.\",\n \"type\": \"string\",\n \"example\": \"Base Currency Adjustment against EUR\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomModule.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomModule.json new file mode 100644 index 00000000..17227333 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomModule.json @@ -0,0 +1,221 @@ +{ + "name": "CreateCustomModule", + "fully_qualified_name": "ZohoBooksApi.CreateCustomModule@0.1.0", + "description": "Creates a custom module in Zoho Books.\n\nUse this tool to create a custom module in Zoho Books. Specify the module name as needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the custom module is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "custom_module_name", + "required": true, + "description": "Specify the name for the custom module to be created in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_name" + }, + { + "name": "custom_module_details", + "required": false, + "description": "JSON object containing 'record_name' for the name of the record and 'cf_debt_amount' for the custom field value.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "record_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the record" + }, + "cf_debt_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom Field" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_custom_module'.", + "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": [ + "ZohoBooks.custommodules.ALL" + ] + } + }, + "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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/{module_name}", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_name", + "tool_parameter_name": "custom_module_name", + "description": "Module Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_module_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "record_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the record" + }, + "cf_debt_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom Field" + } + }, + "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 \"required\": [\n \"record_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"record_name\": {\n \"description\": \"Name of the record\",\n \"type\": \"string\",\n \"example\": \"Alice\"\n },\n \"cf_debt_amount\": {\n \"description\": \"Value of the custom Field\",\n \"type\": \"number\",\n \"example\": 10000\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerDebitNote.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerDebitNote.json new file mode 100644 index 00000000..1f2550e4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerDebitNote.json @@ -0,0 +1,614 @@ +{ + "name": "CreateCustomerDebitNote", + "fully_qualified_name": "ZohoBooksApi.CreateCustomerDebitNote@0.1.0", + "description": "Create a customer debit note for invoice adjustments.\n\nThis tool is used to create a customer debit note when there are additional charges or adjustments needed for an existing invoice in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "A unique identifier for the organization to which the debit note will be associated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "customer_debit_note_request", + "required": false, + "description": "Details for creating a customer debit note, including customer ID, type, currency, contact persons, invoice number, date, payment terms, due date, exchange rate, location, custom fields, reference invoice, and line items.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "debit_note" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the document. For customer debit notes, this should be debit_note" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency" + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of contact person IDs" + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit note number" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit note date" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms in days" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms label" + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Due date" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "reference_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID" + }, + "reference_invoice_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice type description" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Item ID" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC code" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "send_debit_note", + "required": false, + "description": "Set to true to send the debit note to the associated contacts. Accepts true or false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the debit note to the contact person(s) associated with the debit note. Allowed values true and false." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to ignore automatic debit note number generation, requiring manual entry.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto debit note number generation for this debit note. This mandates the debit note number. Allowed values true and false" + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_customer_debit_note'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerdebitnotes", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "Organization ID for the request", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send", + "tool_parameter_name": "send_debit_note", + "description": "Send the debit note to the contact person(s) associated with the debit note. Allowed values true and false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the debit note to the contact person(s) associated with the debit note. Allowed values true and false." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto debit note number generation for this debit note. This mandates the debit note number. Allowed values true and false", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto debit note number generation for this debit note. This mandates the debit note number. Allowed values true and false" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "customer_debit_note_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "debit_note" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the document. For customer debit notes, this should be debit_note" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency" + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of contact person IDs" + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit note number" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit note date" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms in days" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms label" + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Due date" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "reference_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID" + }, + "reference_invoice_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice type description" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Item ID" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC code" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"line_items\",\n \"type\",\n \"reference_invoice_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier for the customer\",\n \"example\": \"982000000567001\"\n },\n \"type\": {\n \"type\": \"string\",\n \"description\": \"Type of the document. For customer debit notes, this should be debit_note\",\n \"example\": \"debit_note\",\n \"enum\": [\n \"debit_note\"\n ]\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier for the currency\",\n \"example\": \"982000000000001\"\n },\n \"contact_persons\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"List of contact person IDs\"\n },\n \"invoice_number\": {\n \"type\": \"string\",\n \"description\": \"Debit note number\",\n \"example\": \"DN-00001\"\n },\n \"date\": {\n \"type\": \"string\",\n \"description\": \"Debit note date\",\n \"example\": \"2013-11-17\"\n },\n \"payment_terms\": {\n \"type\": \"integer\",\n \"description\": \"Payment terms in days\",\n \"example\": 15\n },\n \"payment_terms_label\": {\n \"type\": \"string\",\n \"description\": \"Payment terms label\",\n \"example\": \"Net 15\"\n },\n \"due_date\": {\n \"type\": \"string\",\n \"description\": \"Due date\",\n \"example\": \"2013-12-02\"\n },\n \"exchange_rate\": {\n \"type\": \"number\",\n \"description\": \"Exchange rate\",\n \"example\": 1\n },\n \"location_id\": {\n \"type\": \"string\",\n \"description\": \"Location ID\",\n \"example\": \"460000000038080\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"reference_invoice_id\": {\n \"type\": \"string\",\n \"description\": \"Invoice ID\",\n \"example\": \"982000000567005\"\n },\n \"reference_invoice_type\": {\n \"type\": \"string\",\n \"description\": \"Invoice type description\",\n \"example\": \"registered\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"item_id\"\n ],\n \"properties\": {\n \"item_id\": {\n \"type\": \"string\",\n \"description\": \"Item ID\",\n \"example\": \"982000000030049\"\n },\n \"hsn_or_sac\": {\n \"type\": \"string\",\n \"description\": \"HSN or SAC code\",\n \"example\": \"80540\"\n },\n \"location_id\": {\n \"type\": \"string\",\n \"description\": \"Location ID\",\n \"example\": \"460000000038080\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Description\",\n \"example\": \"Desktop Units\"\n },\n \"rate\": {\n \"type\": \"number\",\n \"description\": \"Rate\",\n \"example\": 20\n },\n \"quantity\": {\n \"type\": \"number\",\n \"description\": \"Quantity\",\n \"example\": 2\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"description\": \"Tax ID\",\n \"example\": \"982000000567104\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerEstimate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerEstimate.json new file mode 100644 index 00000000..cf69c89c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerEstimate.json @@ -0,0 +1,1414 @@ +{ + "name": "CreateCustomerEstimate", + "fully_qualified_name": "ZohoBooksApi.CreateCustomerEstimate@0.1.0", + "description": "Create an estimate for a customer using Zoho Books.\n\nUse this tool to generate a new estimate for a customer within the Zoho Books system. This could be useful when users need to provide potential price quotes or service costs to clients.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the estimate is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_details", + "required": false, + "description": "A JSON object containing detailed information for creating an estimate, such as customer details, currency, line items, and tax information.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the customer (contact) for whom the estimate is created. This must be a valid contact ID from your organization; obtain it using the Contacts API (GET /contacts) or the Create Contact response." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the currency in which the estimate will be created. Use this to specify the customer\u2019s preferred currency for transactions. Fetch valid currency IDs using the Currency API (GET /currencies)." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the estimate." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the template used for generating the estimate PDF. Use this to apply custom branding or formats. Fetch template IDs using the Templates API (GET /estimates/templates)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "estimate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate number.Variantsestimate_number_startswith and estimate_number_contains" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional external identifier used to associate the estimate with other systems or workflows. Helps improve traceability and integration during estimate creation." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate date.Variants date_start, date_end, date_before and date_after" + }, + "expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of expiration of the estimates" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify how the discount has to applied. Either before or after the calculation of tax." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "How the discount is specified. Allowed values are entity_level or item_level.Allowed Values: entity_level and item_level" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the sales person." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Custom fields for an estimate." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the estimate. Determines the display order of line items in the estimate document \u2014 lower values appear first. Use this field to organize line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate between the base currency and the transaction currency for this line item. Used for currency conversion and reporting." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to this line item. This value reduces the line item total before tax calculation." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total amount for this line item after applying quantity, rate, discounts, and taxes. This value contributes to the overall estimate total." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + } + }, + "description": "Line items of an estimate." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the estimate document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the estimate PDF and are visible to customers." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the terms and conditions to be included in the estimate document. This field can be used to specify payment terms, delivery schedules, return policies, or other transactional details. The terms appear on the estimate PDF and helps communicate key conditions related to the estimate." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the estimate. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the estimate total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the estimate total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final estimate total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the estimate document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the estimates. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the Estimate. Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this estimate. Use the project_id returned by the Projects API for the same organization. Linking an estimate to a project helps with project-based billing, tracking, and reporting." + }, + "accept_retainer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether a retainer invoice should be automatically created if the customer accepts this estimate. When set to true, a retainer invoice is generated upon acceptance, streamlining the process for upfront payments or deposits. Allowed values: true and false." + }, + "retainer_percentage": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the estimate amount to be collected as a retainer (upfront payment) when the estimate is accepted. Specify a value between 0 and 100. This determines the portion of the total estimate that will be invoiced as a retainer." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "send_estimate_to_contact", + "required": false, + "description": "Set to true to send the estimate to the contact person(s) associated with it, false to skip sending.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the estimate to the contact person(s) associated with the estimate.Allowed Values: true and false" + }, + "inferrable": true, + "http_endpoint_parameter_name": "send" + }, + { + "name": "ignore_automatic_estimate_number_generation", + "required": false, + "description": "Set to true to bypass automatic estimate number generation. This requires specifying an estimate number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto estimate number generation for this estimate. This mandates the estimate number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_estimate'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send", + "tool_parameter_name": "send_estimate_to_contact", + "description": "Send the estimate to the contact person(s) associated with the estimate.Allowed Values: true and false", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the estimate to the contact person(s) associated with the estimate.Allowed Values: true and false" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_automatic_estimate_number_generation", + "description": "Ignore auto estimate number generation for this estimate. This mandates the estimate number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto estimate number generation for this estimate. This mandates the estimate number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "estimate_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the customer (contact) for whom the estimate is created. This must be a valid contact ID from your organization; obtain it using the Contacts API (GET /contacts) or the Create Contact response." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the currency in which the estimate will be created. Use this to specify the customer\u2019s preferred currency for transactions. Fetch valid currency IDs using the Currency API (GET /currencies)." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the estimate." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the template used for generating the estimate PDF. Use this to apply custom branding or formats. Fetch template IDs using the Templates API (GET /estimates/templates)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "estimate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate number.Variantsestimate_number_startswith and estimate_number_contains" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional external identifier used to associate the estimate with other systems or workflows. Helps improve traceability and integration during estimate creation." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate date.Variants date_start, date_end, date_before and date_after" + }, + "expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of expiration of the estimates" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify how the discount has to applied. Either before or after the calculation of tax." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "How the discount is specified. Allowed values are entity_level or item_level.Allowed Values: entity_level and item_level" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the sales person." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Custom fields for an estimate." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the estimate. Determines the display order of line items in the estimate document \u2014 lower values appear first. Use this field to organize line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate between the base currency and the transaction currency for this line item. Used for currency conversion and reporting." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to this line item. This value reduces the line item total before tax calculation." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total amount for this line item after applying quantity, rate, discounts, and taxes. This value contributes to the overall estimate total." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + } + }, + "description": "Line items of an estimate." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the estimate document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the estimate PDF and are visible to customers." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the terms and conditions to be included in the estimate document. This field can be used to specify payment terms, delivery schedules, return policies, or other transactional details. The terms appear on the estimate PDF and helps communicate key conditions related to the estimate." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the estimate. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the estimate total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the estimate total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final estimate total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the estimate document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the estimates. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the Estimate. Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this estimate. Use the project_id returned by the Projects API for the same organization. Linking an estimate to a project helps with project-based billing, tracking, and reporting." + }, + "accept_retainer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether a retainer invoice should be automatically created if the customer accepts this estimate. When set to true, a retainer invoice is generated upon acceptance, streamlining the process for upfront payments or deposits. Allowed values: true and false." + }, + "retainer_percentage": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the estimate amount to be collected as a retainer (upfront payment) when the estimate is accepted. Specify a value between 0 and 100. This determines the portion of the total estimate that will be invoiced as a retainer." + } + }, + "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 \"required\": [\n \"customer_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"The ID of the customer (contact) for whom the estimate is created. This must be a valid contact ID from your organization; obtain it using the Contacts API (GET /contacts) or the Create Contact response.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"currency_id\": {\n \"description\": \"The ID of the currency in which the estimate will be created. Use this to specify the customer\\u2019s preferred currency for transactions. Fetch valid currency IDs using the Currency API (GET /currencies).\",\n \"type\": \"string\",\n \"example\": 982000000000190\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the estimate.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"template_id\": {\n \"description\": \"The ID of the template used for generating the estimate PDF. Use this to apply custom branding or formats. Fetch template IDs using the Templates API (GET /estimates/templates).\",\n \"type\": \"string\",\n \"example\": 982000000000143\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"estimate_number\": {\n \"description\": \"Search estimates by estimate number.Variantsestimate_number_startswith and estimate_number_contains\",\n \"type\": \"string\",\n \"example\": \"EST-00002\"\n },\n \"reference_number\": {\n \"description\": \"Optional external identifier used to associate the estimate with other systems or workflows. Helps improve traceability and integration during estimate creation.\",\n \"type\": \"string\",\n \"example\": \"QRT-12346\"\n },\n \"date\": {\n \"description\": \"Search estimates by estimate date.Variants date_start, date_end, date_before and date_after\",\n \"type\": \"string\",\n \"example\": \"2013-11-18\"\n },\n \"expiry_date\": {\n \"description\": \"The date of expiration of the estimates\",\n \"type\": \"string\",\n \"example\": \"2013-11-30\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate of the currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"discount\": {\n \"description\": \"Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"is_discount_before_tax\": {\n \"description\": \"Used to specify how the discount has to applied. Either before or after the calculation of tax.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"How the discount is specified. Allowed values are entity_level or item_level.Allowed Values: entity_level and item_level\",\n \"type\": \"string\",\n \"example\": \"item_level\"\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"custom_body\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_subject\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"salesperson_name\": {\n \"description\": \"Name of the sales person.\",\n \"type\": \"string\",\n \"example\": \"Will smith\"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an estimate.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"type\": \"string\",\n \"example\": \"15 Dec 2013\"\n }\n }\n }\n },\n \"line_items\": {\n \"description\": \"Line items of an estimate.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added.\",\n \"type\": \"string\",\n \"example\": 982000000567021\n },\n \"name\": {\n \"description\": \"Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"product_type\": {\n \"description\": \"Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations.\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"E48\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_order\": {\n \"description\": \"Sequential order number for this line item on the estimate. Determines the display order of line items in the estimate document \\u2014 lower values appear first. Use this field to organize line items in a specific sequence.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"bcy_rate\": {\n \"description\": \"Exchange rate between the base currency and the transaction currency for this line item. Used for currency conversion and reporting.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 120\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"quantity\": {\n \"description\": \"Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"discount_amount\": {\n \"description\": \"Discount amount applied to this line item. This value reduces the line item total before tax calculation.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"discount\": {\n \"description\": \"Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax.\",\n \"type\": \"string\",\n \"example\": \"982000000557012\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_name\": {\n \"description\": \"The name of the tax\",\n \"type\": \"string\",\n \"example\": \"VAT\"\n },\n \"tax_type\": {\n \"description\": \"The type of the tax\",\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_percentage\": {\n \"description\": \"The percentage of tax levied\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 12.5\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_total\": {\n \"description\": \"Total amount for this line item after applying quantity, rate, discounts, and taxes. This value contributes to the overall estimate total.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 120\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"notes\": {\n \"description\": \"Additional information or comments to be displayed on the estimate document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the estimate PDF and are visible to customers.\",\n \"type\": \"string\",\n \"example\": \"Looking forward for your business.\"\n },\n \"terms\": {\n \"description\": \"Defines the terms and conditions to be included in the estimate document. This field can be used to specify payment terms, delivery schedules, return policies, or other transactional details. The terms appear on the estimate PDF and helps communicate key conditions related to the estimate.\",\n \"type\": \"string\",\n \"example\": \"Terms & Conditions apply\"\n },\n \"shipping_charge\": {\n \"description\": \"Additional shipping or delivery charges applied to the estimate. Must be specified as a fixed amount (e.g., \\\"25.00\\\"). This amount is added to the estimate total and is subject to tax calculation.\",\n \"type\": \"string\",\n \"example\": 0\n },\n \"adjustment\": {\n \"description\": \"Additional charge or credit amount applied to the estimate total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final estimate total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Text description explaining the reason for the adjustment amount. This description appears on the estimate document to explain why the adjustment was applied. Common examples include \\\"Rounding adjustment\\\", \\\"Handling fee\\\", \\\"Early payment discount\\\", or \\\"Late payment fee\\\". This helps customers understand the purpose of the adjustment.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": 11149000000061054,\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": 11149000000061052,\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the estimates. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the Estimate. Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_id\": {\n \"description\": \"Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added.\",\n \"type\": \"string\",\n \"example\": 982000000567021\n },\n \"name\": {\n \"description\": \"Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"quantity\": {\n \"description\": \"Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"project_id\": {\n \"description\": \"Unique identifier of the project associated with this estimate. Use the project_id returned by the Projects API for the same organization. Linking an estimate to a project helps with project-based billing, tracking, and reporting.\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"accept_retainer\": {\n \"description\": \"Boolean flag indicating whether a retainer invoice should be automatically created if the customer accepts this estimate. When set to true, a retainer invoice is generated upon acceptance, streamlining the process for upfront payments or deposits. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"retainer_percentage\": {\n \"description\": \"Percentage of the estimate amount to be collected as a retainer (upfront payment) when the estimate is accepted. Specify a value between 0 and 100. This determines the portion of the total estimate that will be invoiced as a retainer.\",\n \"type\": \"integer\",\n \"example\": 10\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerInvoice.json new file mode 100644 index 00000000..67c607d6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerInvoice.json @@ -0,0 +1,1856 @@ +{ + "name": "CreateCustomerInvoice", + "fully_qualified_name": "ZohoBooksApi.CreateCustomerInvoice@0.1.0", + "description": "Create an invoice for your customer.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the invoice is created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_details", + "required": false, + "description": "JSON object with details for creating the invoice, including customer ID, line items, and payment terms.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer in the current organization for whom this invoice is created. Required when creating an invoice. Use the `customer_id` returned by the get Customers API. Must belong to the organization specified by the `organization_id` parameter." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency in which the invoice will be created for the customer. Use the `currency_id` returned by the Currencies API for the same organization. This sets the currency for all monetary amounts on the invoice; if it differs from the organization's base currency, an appropriate `exchange_rate` may be required." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of contact person IDs associated with the specified customer. Provide the IDs of contact persons (from the Contacts/Contact Persons API) who should receive invoice communications (e.g., emails) for this invoice. Each ID must belong to the same customer and organization as the invoice. If omitted, the customer's primary contact may be used." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier or reference number for the invoice. When creating an invoice, this can be a custom number (requires `ignore_auto_number_generation=true` query parameter) or left empty for auto-generation. When searching invoices, supports variants: invoice_number_startswith and invoice_number_contains. Maximum length is 100 characters. Must be unique within the organization." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the invoice .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage. Allowed values:
acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the invoice, such as a purchase order number, contract number, or any other business reference. When converting from an estimate or sales order, this field can be used to reference the original document number." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the invoice. Obtain this value from the `template_id` field in the response of the GET `/invoices/templates` API for your organization. Determines which template is used for the invoice PDF." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the invoice is created. Use the format yyyy-mm-dd (e.g., 2013-11-17). This date appears on the invoice document and is used for accounting purposes. When searching invoices, supports variants: date_start, date_end, date_before and date_after." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment (e.g., 15, 30, 60). This value determines the invoice due date by adding the specified number of days to the invoice date. For example, if invoice date is 2023-11-17 and payment_terms is 15, the due_date will be 2023-12-02. Maximum value is 100 days." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom label for payment terms that appears on the invoice document. Used to override the default system-generated label. For example, instead of the default \"Net 15 Days\", you can set this to \"Net 15\", \"Due in 15 days\", or any custom text. This label is displayed to customers on the invoice. Maximum length is 100 characters." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date by which payment is due for the invoice. Use the format yyyy-mm-dd (e.g., 2013-12-03). This date is typically calculated as invoice date + payment_terms days, but can be overridden with a custom date. When searching invoices, supports variants: due_date_start, due_date_end, due_date_before and due_date_after." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines when the discount is applied in relation to tax calculation. When true, discount is applied before tax calculation (discount reduces the taxable amount). When false, discount is applied after tax calculation (discount reduces the final total including tax). This affects the final invoice total and tax amounts." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the scope of discount application. entity_level applies the discount to the entire invoice total. item_level applies the discount to individual line items. This determines how the discount amount is distributed across the invoice items." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that indicates whether line item rates include tax. When true, the specified rates are inclusive of tax (tax is already included in the rate). When false, the rates are exclusive of tax (tax will be added to the rate). This affects how tax calculations are performed on line items." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate used to convert amounts from the invoice currency to the organization's base currency. Required when the invoice currency differs from the organization's base currency. For example, if base currency is USD and invoice currency is EUR, set the EUR to USD exchange rate (e.g., 1.18). Default value is 1.0 when invoice currency matches base currency." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice template that generated this invoice. Use this field when creating an invoice from a recurring invoice template. The `recurring_invoice_id` links this invoice back to its source recurring invoice, enabling tracking of which template generated it and maintaining the recurring invoice relationship." + }, + "invoiced_estimate_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate that was converted to create this invoice. Use this field when creating an invoice from an existing estimate. The `invoiced_estimate_id` links this invoice back to its source estimate, enabling tracking of the conversion process and maintaining the relationship between estimates and invoices." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the salesperson. Max-length [200]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an invoice." + }, + "send": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the invoice to the contact person(s) associated with the invoice. Allowed values true and false." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) to be included in the invoice line item. Use the `item_id` returned by the Items API for the same organization. This field is required for each line item and determines the item details, pricing, and tax settings that will be applied to this line item." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this line item. Use the `project_id` returned by the Projects API for the same organization. This links the line item to a specific project for project-based billing, time tracking, and cost allocation. Optional field that enables project-specific invoicing and reporting." + }, + "time_entry_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the specific bill line item to be converted to an invoice line item. This allows you to convert individual line items from a bill rather than the entire bill, providing granular control over bill-to-invoice conversion." + }, + "bill_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the specific bill line item to be converted to an invoice line item. This allows you to convert individual line items from a bill rather than the entire bill, providing granular control over bill-to-invoice conversion." + }, + "expense_receipt_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item as it appears on the invoice. Maximum length is 100 characters. Can be customized to override the default item name from the item catalog." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item providing additional information about the product or service. This description appears on the invoice document and helps customers understand what they are being charged for. Maximum length is 2000 characters." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the invoice. Determines the display order of line items on the invoice document. Lower numbers appear first. Used for organizing line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Base currency rate for the line item. This is the rate in the organization's base currency before any currency conversion. Used for multi-currency scenarios where the invoice currency differs from the base currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit rate or price for the line item in the invoice currency. This is the amount charged per unit of the item. The rate is used to calculate the line item total (rate \u00d7 quantity) and affects the final invoice amount." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the item being invoiced. This value is multiplied by the rate to calculate the line item total. Must be a positive number greater than zero." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples include \"Nos\" (Numbers), \"kgs\" (Kilograms), \"hrs\" (Hours), \"pcs\" (Pieces), etc. This helps clarify what the quantity represents. Maximum length is 100 characters." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fixed discount amount applied to this specific line item. This is a monetary value that reduces the line item total. The discount is applied after the rate \u00d7 quantity calculation but before tax calculation. Can be used for line-item specific discounts or promotions." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Array of reporting tags associated with this line item. Each tag consists of a `tag_id` and `tag_option_id` that categorize the line item for reporting and analytics purposes. Tags help organize and filter data across reports and enable detailed business intelligence analysis." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header or category that groups related line items together. This is used for organizational purposes to categorize and group similar items on the invoice. For example, \"Electronic devices\", \"Office supplies\", or \"Professional services\". This helps in organizing and presenting line items in a structured manner on the invoice document." + }, + "salesorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices." + } + }, + "description": null + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway has been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether customers can make partial payments against this invoice. When true, customers can pay less than the full invoice amount, and the invoice will remain open with a remaining balance. When false, customers must pay the full amount to complete the invoice. This setting affects payment processing and invoice status tracking." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the invoice document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the invoice PDF and are visible to customers" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the invoice document. This field is used to specify payment terms, delivery conditions, return policies, or any other legal or business terms that apply to this transaction. The terms appear on the invoice PDF and are legally binding." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the invoice. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the invoice total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the invoice total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final invoice total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the invoice document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "billing_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billing address to be used for this invoice. Use the `billing_address_id` returned by the Addresses API for the same customer and organization. This address appears on the invoice document and is used for billing purposes. If omitted, the customer's default billing address will be used." + }, + "shipping_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the shipping address to be used for this invoice. Use the `shipping_address_id` returned by the Addresses API for the same customer and organization. This address appears on the invoice document and is used for delivery purposes. If omitted, the customer's default shipping address will be used." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "salesorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "time_entry_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking." + }, + "batch_payments": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for this batch payment entry." + }, + "amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment amount for this batch payment entry." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account ID where the payment will be recorded." + } + }, + "description": "Array of batch payment details to be processed with the invoice. Each payment includes payment mode, amount, and account information for automated payment processing." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "send_invoice_to_contacts", + "required": false, + "description": "Boolean to determine if the invoice is sent to the contact persons. Use 'true' to send, 'false' otherwise.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the invoice to the contact person(s) associated with the invoice. Allowed values true and false." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to ignore auto invoice number generation, requiring manual input.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto invoice number generation for this invoice. This mandates the invoice number. Allowed values true and false" + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + }, + { + "name": "enable_quick_create_mode", + "required": false, + "description": "Enable quick create mode for streamlined invoice creation with minimal required fields. Set to true for activation.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable quick create mode for simplified invoice creation. When true, the invoice creation process is streamlined with minimal required fields. Allowed values true and false" + }, + "inferrable": true, + "http_endpoint_parameter_name": "is_quick_create" + }, + { + "name": "enable_batch_payments", + "required": false, + "description": "Enable batch payment processing for the invoice. True means the invoice is included in batch operations. Requires 'is_quick_create' to be true.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable batch payment processing for the invoice. When true, the invoice can be included in batch payment operations. Allowed values true and false
Note : is_quick_create needs to be true for batch payments to be processed and batch_payments vales need to pass in request body" + }, + "inferrable": true, + "http_endpoint_parameter_name": "batch_payments" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send", + "tool_parameter_name": "send_invoice_to_contacts", + "description": "Send the invoice to the contact person(s) associated with the invoice. Allowed values true and false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the invoice to the contact person(s) associated with the invoice. Allowed values true and false." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto invoice number generation for this invoice. This mandates the invoice number. Allowed values true and false", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto invoice number generation for this invoice. This mandates the invoice number. Allowed values true and false" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "is_quick_create", + "tool_parameter_name": "enable_quick_create_mode", + "description": "Enable quick create mode for simplified invoice creation. When true, the invoice creation process is streamlined with minimal required fields. Allowed values true and false", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable quick create mode for simplified invoice creation. When true, the invoice creation process is streamlined with minimal required fields. Allowed values true and false" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "batch_payments", + "tool_parameter_name": "enable_batch_payments", + "description": "Enable batch payment processing for the invoice. When true, the invoice can be included in batch payment operations. Allowed values true and false
Note : is_quick_create needs to be true for batch payments to be processed and batch_payments vales need to pass in request body", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable batch payment processing for the invoice. When true, the invoice can be included in batch payment operations. Allowed values true and false
Note : is_quick_create needs to be true for batch payments to be processed and batch_payments vales need to pass in request body" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer in the current organization for whom this invoice is created. Required when creating an invoice. Use the `customer_id` returned by the get Customers API. Must belong to the organization specified by the `organization_id` parameter." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency in which the invoice will be created for the customer. Use the `currency_id` returned by the Currencies API for the same organization. This sets the currency for all monetary amounts on the invoice; if it differs from the organization's base currency, an appropriate `exchange_rate` may be required." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of contact person IDs associated with the specified customer. Provide the IDs of contact persons (from the Contacts/Contact Persons API) who should receive invoice communications (e.g., emails) for this invoice. Each ID must belong to the same customer and organization as the invoice. If omitted, the customer's primary contact may be used." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier or reference number for the invoice. When creating an invoice, this can be a custom number (requires `ignore_auto_number_generation=true` query parameter) or left empty for auto-generation. When searching invoices, supports variants: invoice_number_startswith and invoice_number_contains. Maximum length is 100 characters. Must be unique within the organization." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the invoice .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage. Allowed values:
acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the invoice, such as a purchase order number, contract number, or any other business reference. When converting from an estimate or sales order, this field can be used to reference the original document number." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the invoice. Obtain this value from the `template_id` field in the response of the GET `/invoices/templates` API for your organization. Determines which template is used for the invoice PDF." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the invoice is created. Use the format yyyy-mm-dd (e.g., 2013-11-17). This date appears on the invoice document and is used for accounting purposes. When searching invoices, supports variants: date_start, date_end, date_before and date_after." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment (e.g., 15, 30, 60). This value determines the invoice due date by adding the specified number of days to the invoice date. For example, if invoice date is 2023-11-17 and payment_terms is 15, the due_date will be 2023-12-02. Maximum value is 100 days." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom label for payment terms that appears on the invoice document. Used to override the default system-generated label. For example, instead of the default \"Net 15 Days\", you can set this to \"Net 15\", \"Due in 15 days\", or any custom text. This label is displayed to customers on the invoice. Maximum length is 100 characters." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date by which payment is due for the invoice. Use the format yyyy-mm-dd (e.g., 2013-12-03). This date is typically calculated as invoice date + payment_terms days, but can be overridden with a custom date. When searching invoices, supports variants: due_date_start, due_date_end, due_date_before and due_date_after." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines when the discount is applied in relation to tax calculation. When true, discount is applied before tax calculation (discount reduces the taxable amount). When false, discount is applied after tax calculation (discount reduces the final total including tax). This affects the final invoice total and tax amounts." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the scope of discount application. entity_level applies the discount to the entire invoice total. item_level applies the discount to individual line items. This determines how the discount amount is distributed across the invoice items." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that indicates whether line item rates include tax. When true, the specified rates are inclusive of tax (tax is already included in the rate). When false, the rates are exclusive of tax (tax will be added to the rate). This affects how tax calculations are performed on line items." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate used to convert amounts from the invoice currency to the organization's base currency. Required when the invoice currency differs from the organization's base currency. For example, if base currency is USD and invoice currency is EUR, set the EUR to USD exchange rate (e.g., 1.18). Default value is 1.0 when invoice currency matches base currency." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice template that generated this invoice. Use this field when creating an invoice from a recurring invoice template. The `recurring_invoice_id` links this invoice back to its source recurring invoice, enabling tracking of which template generated it and maintaining the recurring invoice relationship." + }, + "invoiced_estimate_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate that was converted to create this invoice. Use this field when creating an invoice from an existing estimate. The `invoiced_estimate_id` links this invoice back to its source estimate, enabling tracking of the conversion process and maintaining the relationship between estimates and invoices." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the salesperson. Max-length [200]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an invoice." + }, + "send": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the invoice to the contact person(s) associated with the invoice. Allowed values true and false." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) to be included in the invoice line item. Use the `item_id` returned by the Items API for the same organization. This field is required for each line item and determines the item details, pricing, and tax settings that will be applied to this line item." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this line item. Use the `project_id` returned by the Projects API for the same organization. This links the line item to a specific project for project-based billing, time tracking, and cost allocation. Optional field that enables project-specific invoicing and reporting." + }, + "time_entry_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the specific bill line item to be converted to an invoice line item. This allows you to convert individual line items from a bill rather than the entire bill, providing granular control over bill-to-invoice conversion." + }, + "bill_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the specific bill line item to be converted to an invoice line item. This allows you to convert individual line items from a bill rather than the entire bill, providing granular control over bill-to-invoice conversion." + }, + "expense_receipt_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item as it appears on the invoice. Maximum length is 100 characters. Can be customized to override the default item name from the item catalog." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item providing additional information about the product or service. This description appears on the invoice document and helps customers understand what they are being charged for. Maximum length is 2000 characters." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the invoice. Determines the display order of line items on the invoice document. Lower numbers appear first. Used for organizing line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Base currency rate for the line item. This is the rate in the organization's base currency before any currency conversion. Used for multi-currency scenarios where the invoice currency differs from the base currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit rate or price for the line item in the invoice currency. This is the amount charged per unit of the item. The rate is used to calculate the line item total (rate \u00d7 quantity) and affects the final invoice amount." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the item being invoiced. This value is multiplied by the rate to calculate the line item total. Must be a positive number greater than zero." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples include \"Nos\" (Numbers), \"kgs\" (Kilograms), \"hrs\" (Hours), \"pcs\" (Pieces), etc. This helps clarify what the quantity represents. Maximum length is 100 characters." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fixed discount amount applied to this specific line item. This is a monetary value that reduces the line item total. The discount is applied after the rate \u00d7 quantity calculation but before tax calculation. Can be used for line-item specific discounts or promotions." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Array of reporting tags associated with this line item. Each tag consists of a `tag_id` and `tag_option_id` that categorize the line item for reporting and analytics purposes. Tags help organize and filter data across reports and enable detailed business intelligence analysis." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header or category that groups related line items together. This is used for organizational purposes to categorize and group similar items on the invoice. For example, \"Electronic devices\", \"Office supplies\", or \"Professional services\". This helps in organizing and presenting line items in a structured manner on the invoice document." + }, + "salesorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices." + } + }, + "description": null + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway has been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether customers can make partial payments against this invoice. When true, customers can pay less than the full invoice amount, and the invoice will remain open with a remaining balance. When false, customers must pay the full amount to complete the invoice. This setting affects payment processing and invoice status tracking." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the invoice document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the invoice PDF and are visible to customers" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the invoice document. This field is used to specify payment terms, delivery conditions, return policies, or any other legal or business terms that apply to this transaction. The terms appear on the invoice PDF and are legally binding." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the invoice. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the invoice total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the invoice total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final invoice total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the invoice document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "billing_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billing address to be used for this invoice. Use the `billing_address_id` returned by the Addresses API for the same customer and organization. This address appears on the invoice document and is used for billing purposes. If omitted, the customer's default billing address will be used." + }, + "shipping_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the shipping address to be used for this invoice. Use the `shipping_address_id` returned by the Addresses API for the same customer and organization. This address appears on the invoice document and is used for delivery purposes. If omitted, the customer's default shipping address will be used." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "salesorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "time_entry_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking." + }, + "batch_payments": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for this batch payment entry." + }, + "amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment amount for this batch payment entry." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account ID where the payment will be recorded." + } + }, + "description": "Array of batch payment details to be processed with the invoice. Each payment includes payment mode, amount, and account information for automated payment processing." + } + }, + "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 \"required\": [\n \"customer_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier of the customer in the current organization for whom this invoice is created. Required when creating an invoice. Use the `customer_id` returned by the get Customers API. Must belong to the organization specified by the `organization_id` parameter.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"currency_id\": {\n \"description\": \"Unique identifier of the currency in which the invoice will be created for the customer. Use the `currency_id` returned by the Currencies API for the same organization. This sets the currency for all monetary amounts on the invoice; if it differs from the organization's base currency, an appropriate `exchange_rate` may be required.\",\n \"type\": \"string\",\n \"example\": 982000000000190\n },\n \"contact_persons\": {\n \"description\": \"Array of contact person IDs associated with the specified customer. Provide the IDs of contact persons (from the Contacts/Contact Persons API) who should receive invoice communications (e.g., emails) for this invoice. Each ID must belong to the same customer and organization as the invoice. If omitted, the customer's primary contact may be used.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"982000000870911\",\n \"982000000870915\"\n ]\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"invoice_number\": {\n \"description\": \"Unique identifier or reference number for the invoice. When creating an invoice, this can be a custom number (requires `ignore_auto_number_generation=true` query parameter) or left empty for auto-generation. When searching invoices, supports variants: invoice_number_startswith and invoice_number_contains. Maximum length is 100 characters. Must be unique within the organization.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the invoice .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_usage\": {\n \"description\": \"Choose CFDI Usage. Allowed values:
acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll.\",\n \"type\": \"string\",\n \"example\": \"acquisition_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reference_number\": {\n \"description\": \"External reference number or identifier for the invoice, such as a purchase order number, contract number, or any other business reference. When converting from an estimate or sales order, this field can be used to reference the original document number.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"template_id\": {\n \"description\": \"Unique identifier of the PDF template linked to the invoice. Obtain this value from the `template_id` field in the response of the GET `/invoices/templates` API for your organization. Determines which template is used for the invoice PDF.\",\n \"type\": \"string\",\n \"example\": 982000000000143\n },\n \"date\": {\n \"description\": \"The date on which the invoice is created. Use the format yyyy-mm-dd (e.g., 2013-11-17). This date appears on the invoice document and is used for accounting purposes. When searching invoices, supports variants: date_start, date_end, date_before and date_after.\",\n \"type\": \"string\",\n \"example\": \"2013-11-17\"\n },\n \"payment_terms\": {\n \"description\": \"Number of days allowed for payment (e.g., 15, 30, 60). This value determines the invoice due date by adding the specified number of days to the invoice date. For example, if invoice date is 2023-11-17 and payment_terms is 15, the due_date will be 2023-12-02. Maximum value is 100 days.\",\n \"type\": \"integer\",\n \"example\": 15\n },\n \"payment_terms_label\": {\n \"description\": \"Custom label for payment terms that appears on the invoice document. Used to override the default system-generated label. For example, instead of the default \\\"Net 15 Days\\\", you can set this to \\\"Net 15\\\", \\\"Due in 15 days\\\", or any custom text. This label is displayed to customers on the invoice. Maximum length is 100 characters.\",\n \"type\": \"string\",\n \"example\": \"Net 15\"\n },\n \"due_date\": {\n \"description\": \"The date by which payment is due for the invoice. Use the format yyyy-mm-dd (e.g., 2013-12-03). This date is typically calculated as invoice date + payment_terms days, but can be overridden with a custom date. When searching invoices, supports variants: due_date_start, due_date_end, due_date_before and due_date_after.\",\n \"type\": \"string\",\n \"example\": \"2013-12-03\"\n },\n \"discount\": {\n \"description\": \"Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \\u2014 up to a maximum of 100% \\u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level).\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"is_discount_before_tax\": {\n \"description\": \"Boolean flag that determines when the discount is applied in relation to tax calculation. When true, discount is applied before tax calculation (discount reduces the taxable amount). When false, discount is applied after tax calculation (discount reduces the final total including tax). This affects the final invoice total and tax amounts.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"Specifies the scope of discount application. entity_level applies the discount to the entire invoice total. item_level applies the discount to individual line items. This determines how the discount amount is distributed across the invoice items.\",\n \"type\": \"string\",\n \"example\": \"item_level\"\n },\n \"is_inclusive_tax\": {\n \"description\": \"Boolean flag that indicates whether line item rates include tax. When true, the specified rates are inclusive of tax (tax is already included in the rate). When false, the rates are exclusive of tax (tax will be added to the rate). This affects how tax calculations are performed on line items.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate used to convert amounts from the invoice currency to the organization's base currency. Required when the invoice currency differs from the organization's base currency. For example, if base currency is USD and invoice currency is EUR, set the EUR to USD exchange rate (e.g., 1.18). Default value is 1.0 when invoice currency matches base currency.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 1\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"recurring_invoice_id\": {\n \"description\": \"Unique identifier of the recurring invoice template that generated this invoice. Use this field when creating an invoice from a recurring invoice template. The `recurring_invoice_id` links this invoice back to its source recurring invoice, enabling tracking of which template generated it and maintaining the recurring invoice relationship.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"invoiced_estimate_id\": {\n \"description\": \"Unique identifier of the estimate that was converted to create this invoice. Use this field when creating an invoice from an existing estimate. The `invoiced_estimate_id` links this invoice back to its source estimate, enabling tracking of the conversion process and maintaining the relationship between estimates and invoices.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"salesperson_name\": {\n \"description\": \"Name of the salesperson. Max-length [200]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"send\": {\n \"description\": \"Send the invoice to the contact person(s) associated with the invoice. Allowed values true and false.\",\n \"type\": \"boolean\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"item_id\"\n ],\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier of the item (product or service) to be included in the invoice line item. Use the `item_id` returned by the Items API for the same organization. This field is required for each line item and determines the item details, pricing, and tax settings that will be applied to this line item.\",\n \"type\": \"string\",\n \"example\": 982000000030049\n },\n \"project_id\": {\n \"description\": \"Unique identifier of the project associated with this line item. Use the `project_id` returned by the Projects API for the same organization. This links the line item to a specific project for project-based billing, time tracking, and cost allocation. Optional field that enables project-specific invoicing and reporting.\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"time_entry_ids\": {\n \"description\": \"Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": []\n },\n \"product_type\": {\n \"description\": \"Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations.\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"E48\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"expense_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion.\",\n \"example\": \"460000000028080\"\n },\n \"bill_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier of the specific bill line item to be converted to an invoice line item. This allows you to convert individual line items from a bill rather than the entire bill, providing granular control over bill-to-invoice conversion.\",\n \"example\": \" \"\n },\n \"bill_item_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier of the specific bill line item to be converted to an invoice line item. This allows you to convert individual line items from a bill rather than the entire bill, providing granular control over bill-to-invoice conversion.\",\n \"example\": \" \"\n },\n \"expense_receipt_name\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item as it appears on the invoice. Maximum length is 100 characters. Can be customized to override the default item name from the item catalog.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item providing additional information about the product or service. This description appears on the invoice document and helps customers understand what they are being charged for. Maximum length is 2000 characters.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"item_order\": {\n \"description\": \"Sequential order number for this line item on the invoice. Determines the display order of line items on the invoice document. Lower numbers appear first. Used for organizing line items in a specific sequence.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"bcy_rate\": {\n \"description\": \"Base currency rate for the line item. This is the rate in the organization's base currency before any currency conversion. Used for multi-currency scenarios where the invoice currency differs from the base currency.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 120\n },\n \"rate\": {\n \"description\": \"Unit rate or price for the line item in the invoice currency. This is the amount charged per unit of the item. The rate is used to calculate the line item total (rate \\u00d7 quantity) and affects the final invoice amount.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"quantity\": {\n \"description\": \"Number of units of the item being invoiced. This value is multiplied by the rate to calculate the line item total. Must be a positive number greater than zero.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the line item quantity. Examples include \\\"Nos\\\" (Numbers), \\\"kgs\\\" (Kilograms), \\\"hrs\\\" (Hours), \\\"pcs\\\" (Pieces), etc. This helps clarify what the quantity represents. Maximum length is 100 characters.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"discount_amount\": {\n \"description\": \"Fixed discount amount applied to this specific line item. This is a monetary value that reduces the line item total. The discount is applied after the rate \\u00d7 quantity calculation but before tax calculation. Can be used for line-item specific discounts or promotions.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"discount\": {\n \"description\": \"Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \\u2014 up to a maximum of 100% \\u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level).\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"tags\": {\n \"description\": \"Array of reporting tags associated with this line item. Each tag consists of a `tag_id` and `tag_option_id` that categorize the line item for reporting and analytics purposes. Tags help organize and filter data across reports and enable detailed business intelligence analysis.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 982000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 982000000002670\n }\n }\n }\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax.\",\n \"type\": \"string\",\n \"example\": \"982000000557012\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_name\": {\n \"description\": \"The name of the tax\",\n \"type\": \"string\",\n \"example\": \"VAT\"\n },\n \"tax_type\": {\n \"description\": \"The type of the tax\",\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_percentage\": {\n \"description\": \"The percentage of tax levied\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 12.5\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"header_name\": {\n \"description\": \"Name of the item header or category that groups related line items together. This is used for organizational purposes to categorize and group similar items on the invoice. For example, \\\"Electronic devices\\\", \\\"Office supplies\\\", or \\\"Professional services\\\". This helps in organizing and presenting line items in a structured manner on the invoice document.\",\n \"type\": \"string\",\n \"example\": \"Electronic devices\"\n },\n \"salesorder_item_id\": {\n \"description\": \"Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices.\",\n \"type\": \"string\",\n \"example\": \" \"\n }\n }\n }\n },\n \"payment_options\": {\n \"description\": \"Payment options for the invoice, online payment gateways and bank accounts. Will be displayed in the pdf.\",\n \"type\": \"object\",\n \"properties\": {\n \"payment_gateways\": {\n \"description\": \"Online payment gateways through which payment can be made.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"configured\": {\n \"description\": \"Boolean check to see if a payment gateway has been configured\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"additional_field1\": {\n \"description\": \"Paypal payment method. Allowed Values: standard and adaptive\",\n \"type\": \"string\",\n \"example\": \"standard\"\n },\n \"gateway_name\": {\n \"description\": \"Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree\",\n \"type\": \"string\",\n \"example\": \"paypal\"\n }\n }\n }\n }\n }\n },\n \"allow_partial_payments\": {\n \"description\": \"Boolean flag that determines whether customers can make partial payments against this invoice. When true, customers can pay less than the full invoice amount, and the invoice will remain open with a remaining balance. When false, customers must pay the full amount to complete the invoice. This setting affects payment processing and invoice status tracking.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"custom_body\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_subject\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"notes\": {\n \"description\": \"Additional information or comments to be displayed on the invoice document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the invoice PDF and are visible to customers\",\n \"type\": \"string\",\n \"example\": \"Looking forward for your business.\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions text to be displayed on the invoice document. This field is used to specify payment terms, delivery conditions, return policies, or any other legal or business terms that apply to this transaction. The terms appear on the invoice PDF and are legally binding.\",\n \"type\": \"string\",\n \"example\": \"Terms & Conditions apply\"\n },\n \"shipping_charge\": {\n \"description\": \"Additional shipping or delivery charges applied to the invoice. Must be specified as a fixed amount (e.g., \\\"25.00\\\"). This amount is added to the invoice total and is subject to tax calculation.\",\n \"type\": \"string\",\n \"example\": 0\n },\n \"adjustment\": {\n \"description\": \"Additional charge or credit amount applied to the invoice total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final invoice total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Text description explaining the reason for the adjustment amount. This description appears on the invoice document to explain why the adjustment was applied. Common examples include \\\"Rounding adjustment\\\", \\\"Handling fee\\\", \\\"Early payment discount\\\", or \\\"Late payment fee\\\". This helps customers understand the purpose of the adjustment.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"reason\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": 11149000000061052,\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": 11149000000061054,\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"billing_address_id\": {\n \"description\": \"Unique identifier of the billing address to be used for this invoice. Use the `billing_address_id` returned by the Addresses API for the same customer and organization. This address appears on the invoice document and is used for billing purposes. If omitted, the customer's default billing address will be used.\",\n \"type\": \"string\",\n \"example\": \"218500000000142012\"\n },\n \"shipping_address_id\": {\n \"description\": \"Unique identifier of the shipping address to be used for this invoice. Use the `shipping_address_id` returned by the Addresses API for the same customer and organization. This address appears on the invoice document and is used for delivery purposes. If omitted, the customer's default shipping address will be used.\",\n \"type\": \"string\",\n \"example\": \"218500000000142014\"\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"expense_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion.\",\n \"example\": \"460000000028080\"\n },\n \"salesorder_item_id\": {\n \"description\": \"Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"time_entry_ids\": {\n \"description\": \"Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": []\n },\n \"batch_payments\": {\n \"description\": \"Array of batch payment details to be processed with the invoice. Each payment includes payment mode, amount, and account information for automated payment processing.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"payment_mode\": {\n \"description\": \"Mode of payment for this batch payment entry.\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"amount\": {\n \"description\": \"Payment amount for this batch payment entry.\",\n \"type\": \"string\",\n \"example\": \"100.00\"\n },\n \"account_id\": {\n \"description\": \"Account ID where the payment will be recorded.\",\n \"type\": \"string\",\n \"example\": \"1000000095342\"\n }\n }\n },\n \"example\": [\n {\n \"payment_mode\": \"Cash\",\n \"amount\": \"100.00\",\n \"account_id\": \"1000000095342\"\n }\n ]\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerPayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerPayment.json new file mode 100644 index 00000000..5c81c35c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateCustomerPayment.json @@ -0,0 +1,512 @@ +{ + "name": "CreateCustomerPayment", + "fully_qualified_name": "ZohoBooksApi.CreateCustomerPayment@0.1.0", + "description": "Create a new customer payment in Zoho Books.\n\nUse this tool to record a new payment for a customer in Zoho Books. It should be called when you need to add a payment entry for accounting purposes or to update a customer's payment status.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is necessary to associate the payment with the correct organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_data", + "required": false, + "description": "A JSON object containing payment details, including customer ID, payment mode, amount, date, and any associated invoices. Includes optional fields like reference number, description, exchange rate, and custom fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer involved in the payment." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment is made. This can be check, cash, creditcard, banktransfer, bankremittance, autotransaction or others. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + }, + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + } + }, + "description": "List of invoices associated with the payment. Each invoice object contains invoice_id, invoice_number, date, invoice_amount, amount_applied and balance_amount." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Denotes any additional bank charges." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "description": "Additional fields for the payments." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount withheld for tax." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/bank account the payment has to be deposited." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "IDs of the contact personsthe thank you mail has to be triggered." + }, + "retainerinvoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the retainer invoice associated with the payment" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_customer_payment'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "payment_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer involved in the payment." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment is made. This can be check, cash, creditcard, banktransfer, bankremittance, autotransaction or others. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + }, + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + } + }, + "description": "List of invoices associated with the payment. Each invoice object contains invoice_id, invoice_number, date, invoice_amount, amount_applied and balance_amount." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Denotes any additional bank charges." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "description": "Additional fields for the payments." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount withheld for tax." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/bank account the payment has to be deposited." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "IDs of the contact personsthe thank you mail has to be triggered." + }, + "retainerinvoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the retainer invoice associated with the payment" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"payment_mode\",\n \"amount\",\n \"invoices\",\n \"date\",\n \"invoice_id\",\n \"amount_applied\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Customer ID of the customer involved in the payment.\",\n \"type\": \"string\",\n \"example\": \"903000000000099\"\n },\n \"payment_mode\": {\n \"description\": \"Mode through which payment is made. This can be check, cash, creditcard, banktransfer, bankremittance, autotransaction or others. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"amount\": {\n \"description\": \"Amount paid in the respective payment.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"date\": {\n \"description\": \"Date on which payment is made. Format [yyyy-mm-dd]\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"reference_number\": {\n \"description\": \"Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"description\": {\n \"description\": \"Description about the payment.\",\n \"type\": \"string\",\n \"example\": \"Payment has been added to INV-384\"\n },\n \"invoices\": {\n \"description\": \"List of invoices associated with the payment. Each invoice object contains invoice_id, invoice_number, date, invoice_amount, amount_applied and balance_amount.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"invoice_id\": {\n \"description\": \"Invoice ID of the required invoice.\",\n \"type\": \"string\",\n \"example\": \"90300000079426\"\n },\n \"amount_applied\": {\n \"description\": \"Amount paid for the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n }\n }\n }\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1,\n \"default\": 1\n },\n \"payment_form\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"cash\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"bank_charges\": {\n \"description\": \"Denotes any additional bank charges.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"custom_fields\": {\n \"description\": \"Additional fields for the payments.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"description\": \"Label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"label\"\n },\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": 129890\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"invoice_id\": {\n \"description\": \"Invoice ID of the required invoice.\",\n \"type\": \"string\",\n \"example\": \"90300000079426\"\n },\n \"amount_applied\": {\n \"description\": \"Amount paid for the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"tax_amount_withheld\": {\n \"description\": \"Amount withheld for tax.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"account_id\": {\n \"description\": \"ID of the cash/bank account the payment has to be deposited.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"contact_persons\": {\n \"description\": \"IDs of the contact personsthe thank you mail has to be triggered.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"982000000870911\",\n \"982000000870915\"\n ]\n },\n \"retainerinvoice_id\": {\n \"description\": \"ID of the retainer invoice associated with the payment\",\n \"type\": \"string\",\n \"example\": \"982000000567114\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateEmployeeForExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateEmployeeForExpense.json new file mode 100644 index 00000000..7d087e51 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateEmployeeForExpense.json @@ -0,0 +1,188 @@ +{ + "name": "CreateEmployeeForExpense", + "fully_qualified_name": "ZohoBooksApi.CreateEmployeeForExpense@0.1.0", + "description": "Create an employee for an expense record in Zoho Books.\n\nThis tool is used to create a new employee entry for the purpose of logging an expense in Zoho Books. It should be called when there is a need to register an employee related to specific expenses.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books where the employee will be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "employee_details", + "required": false, + "description": "A JSON object containing 'name' and 'email' of the employee to be created for the expense.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_employee'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/employees", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "employee_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "email": { + "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 \"required\": [\n \"name\",\n \"email\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"example\": \"John David\"\n },\n \"email\": {\n \"type\": \"string\",\n \"example\": \"johnsmith@zilliuminc.com\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateExchangeRate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateExchangeRate.json new file mode 100644 index 00000000..272b3d82 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateExchangeRate.json @@ -0,0 +1,221 @@ +{ + "name": "CreateExchangeRate", + "fully_qualified_name": "ZohoBooksApi.CreateExchangeRate@0.1.0", + "description": "Create an exchange rate for a specified currency.\n\nThis tool should be called when you need to create a new exchange rate for a specific currency in Zoho Books. It allows you to define exchange rates between specified currencies.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the exchange rate is being created. This must be a unique identifier within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_identifier", + "required": true, + "description": "Unique identifier for the currency used to create the exchange rate in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + }, + { + "name": "exchange_rate_details", + "required": false, + "description": "JSON object containing details like 'effective_date' (the date for the exchange rate) and 'rate' (the exchange rate value).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "effective_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date which the exchange rate is applicable for the currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of exchange for the currency with respect to base currency." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_exchange_rate'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "currency_identifier", + "description": "Unique identifier of the currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "exchange_rate_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "effective_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date which the exchange rate is applicable for the currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of exchange for the currency with respect to base currency." + } + }, + "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 \"effective_date\": {\n \"description\": \"Date which the exchange rate is applicable for the currency.\",\n \"type\": \"string\",\n \"example\": \"2013-09-04\"\n },\n \"rate\": {\n \"description\": \"Rate of exchange for the currency with respect to base currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1.23\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateExpense.json new file mode 100644 index 00000000..89889e7c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateExpense.json @@ -0,0 +1,1073 @@ +{ + "name": "CreateExpense", + "fully_qualified_name": "ZohoBooksApi.CreateExpense@0.1.0", + "description": "Create a billable or non-billable expense record.\n\nUse this tool to create an expense entry that can be marked as billable or non-billable. Ideal for tracking expenses in your financial system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the expense is being recorded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "expense_receipt_file", + "required": false, + "description": "File path or URL for the expense receipt. Accepted formats: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expense receipt file to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "inferrable": true, + "http_endpoint_parameter_name": "receipt" + }, + { + "name": "expense_details", + "required": false, + "description": "Detailed information about the expense, including account ID, date, amount, line items, etc., in JSON format.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the expense" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption code" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + } + }, + "description": null + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number of the expense. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project associated with the customer." + }, + "mileage_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "start_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "end_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "distance": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Distance travelled for a particular mileage expense where mileage_type is manual" + }, + "mileage_unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the distance travelled. Allowed Values: km and mile" + }, + "mileage_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mileage rate for a particular mileage expense." + }, + "employee_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the employee who has submitted this mileage expense." + }, + "vehicle_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Vehicle type for a particular mileage expense. Allowed Values: car, van, motorcycle and bike" + }, + "can_reclaim_vat_on_mileage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify if tax can be reclaimed for this mileage expense." + }, + "fuel_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fuel type for a particular mileage expense. Allowed Values: petrol, lpg and diesel" + }, + "engine_capacity_range": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Engine capacity range for a particular mileage expense. Allowed Values: less_than_1400cc, between_1400cc_and_1600cc, between_1600cc_and_2000cc and more_than_2000cc" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the expense is made." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom fields for an expense." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "receipt", + "tool_parameter_name": "expense_receipt_file", + "description": "Expense receipt file to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expense receipt file to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "expense_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the expense" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption code" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + } + }, + "description": null + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number of the expense. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project associated with the customer." + }, + "mileage_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "start_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "end_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "distance": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Distance travelled for a particular mileage expense where mileage_type is manual" + }, + "mileage_unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the distance travelled. Allowed Values: km and mile" + }, + "mileage_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mileage rate for a particular mileage expense." + }, + "employee_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the employee who has submitted this mileage expense." + }, + "vehicle_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Vehicle type for a particular mileage expense. Allowed Values: car, van, motorcycle and bike" + }, + "can_reclaim_vat_on_mileage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify if tax can be reclaimed for this mileage expense." + }, + "fuel_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fuel type for a particular mileage expense. Allowed Values: petrol, lpg and diesel" + }, + "engine_capacity_range": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Engine capacity range for a particular mileage expense. Allowed Values: less_than_1400cc, between_1400cc_and_1600cc, between_1600cc_and_2000cc and more_than_2000cc" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the expense is made." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom fields for an expense." + } + }, + "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 \"required\": [\n \"date\",\n \"account_id\",\n \"amount\",\n \"paid_through_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"account_id\": {\n \"description\": \"ID of the expense account.\",\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"date\": {\n \"description\": \"Date of the expense\",\n \"type\": \"string\",\n \"example\": \"2013-11-18\"\n },\n \"amount\": {\n \"description\": \"Amount of the Expense.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"ID of the reverse charge tax\",\n \"type\": \"string\",\n \"example\": 982000000561063\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"type\": \"string\",\n \"example\": 10763000000140068\n },\n \"account_id\": {\n \"description\": \"ID of the expense account.\",\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"description\": {\n \"description\": \"Description of the expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Marketing\"\n },\n \"amount\": {\n \"description\": \"Amount of the Expense.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"item_order\": {\n \"type\": \"string\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"ID of the reverse charge tax\",\n \"type\": \"string\",\n \"example\": 982000000561063\n },\n \"tax_exemption_code\": {\n \"description\": \"Enter tax exemption code\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Enter tax exemption ID\",\n \"type\": \"string\",\n \"example\": 982000000561067,\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n }\n }\n }\n },\n \"taxes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"tax_amount\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 11.85\n }\n }\n },\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_billable\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"reference_number\": {\n \"description\": \"Reference number of the expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": null\n },\n \"description\": {\n \"description\": \"Description of the expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Marketing\"\n },\n \"customer_id\": {\n \"description\": \"ID of the expense account.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"exchange_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"project_id\": {\n \"description\": \"ID of the project associated with the customer.\",\n \"type\": \"string\",\n \"example\": 982000000567226\n },\n \"mileage_type\": {\n \"type\": \"string\",\n \"example\": \"non_mileage\"\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"eu_vat_not_registered\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the expense .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"start_reading\": {\n \"description\": \"Start reading of odometer when creating a mileage expense where mileage_type is odometer.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \" \"\n },\n \"end_reading\": {\n \"description\": \"End reading of odometer when creating a mileage expense where mileage_type is odometer.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \" \"\n },\n \"distance\": {\n \"description\": \"Distance travelled for a particular mileage expense where mileage_type is manual\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"mileage_unit\": {\n \"description\": \"Unit of the distance travelled. Allowed Values: km and mile\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"mileage_rate\": {\n \"description\": \"Mileage rate for a particular mileage expense.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \" \"\n },\n \"employee_id\": {\n \"description\": \"ID of the employee who has submitted this mileage expense.\",\n \"type\": \"string\",\n \"example\": \"982000000030040\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vehicle_type\": {\n \"description\": \"Vehicle type for a particular mileage expense. Allowed Values: car, van, motorcycle and bike\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"can_reclaim_vat_on_mileage\": {\n \"description\": \"To specify if tax can be reclaimed for this mileage expense.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"fuel_type\": {\n \"description\": \"Fuel type for a particular mileage expense. Allowed Values: petrol, lpg and diesel\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"engine_capacity_range\": {\n \"description\": \"Engine capacity range for a particular mileage expense. Allowed Values: less_than_1400cc, between_1400cc_and_1600cc, between_1600cc_and_2000cc and more_than_2000cc\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"paid_through_account_id\": {\n \"description\": \"Search expenses by paid through account id.\",\n \"type\": \"string\",\n \"example\": 982000000567250\n },\n \"vendor_id\": {\n \"description\": \"ID of the vendor the expense is made.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an expense.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateFinancialAccountRule.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateFinancialAccountRule.json new file mode 100644 index 00000000..5599027a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateFinancialAccountRule.json @@ -0,0 +1,462 @@ +{ + "name": "CreateFinancialAccountRule", + "fully_qualified_name": "ZohoBooksApi.CreateFinancialAccountRule@0.1.0", + "description": "Create and apply rules for banking and credit accounts.\n\nThis tool allows you to create a rule for deposits, withdrawals, refunds, or charges on bank and credit card accounts. It should be called when you need to automate financial processes by setting specific rules for account transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Used to specify which organization's account rules are being altered.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "financial_rule_details", + "required": false, + "description": "A JSON object detailing the rule specifics such as rule name, target account ID, application type (deposits, withdrawals, refunds, or charges), criteria, and relevant transaction details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rule_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Rule" + }, + "target_account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account on which the rule has to be applied." + }, + "apply_to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rule applies to either deposits or withdrawals for bank accounts and to refunds or charges for credit card account. Allowed Values : withdrawals, deposits, refunds and charges." + }, + "criteria_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether all the criteria have to be satisfied or not. Allowed Values : and and or" + }, + "criterion": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field involved in the Criteria" + }, + "comparator": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comparator used in Criteria" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value to be compared with" + } + }, + "description": null + }, + "record_as": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Record transaction based on value specified in apply_to node. For bank accounts: If apply_to is deposits: sales_without_invoices, transfer_fund, interest_income, other_income, expense_refund, deposit. If apply_to is withdrawals: expense, transfer_fund, card_payment, owner_drawings. For credit_card accounts: If apply_to is refunds: card_payment, transfer_fund, expense_refund, refund. If apply_to is charges: expense, transfer_fund. Allowed Values: expense, deposit, refund, transfer_fund, card_payment, sales_without_invoices, expense_refund, interest_income, other_income and owner_drawings" + }, + "account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account which is involved in the rule with the target account." + }, + "customer_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer.(Applicable for sales_without_invoices,deposit, expense)" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID involved in the transaction." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies if Reference number is manual or generated from the statement. Allowed Values: manual and from_statement" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bank rules. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling/purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bank transaction.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Product Type associated with the Rule. Allowed values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority Associated with the Rule" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Associated with the Rule" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_bank_account_rule'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/rules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "financial_rule_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rule_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Rule" + }, + "target_account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account on which the rule has to be applied." + }, + "apply_to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rule applies to either deposits or withdrawals for bank accounts and to refunds or charges for credit card account. Allowed Values : withdrawals, deposits, refunds and charges." + }, + "criteria_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether all the criteria have to be satisfied or not. Allowed Values : and and or" + }, + "criterion": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field involved in the Criteria" + }, + "comparator": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comparator used in Criteria" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value to be compared with" + } + }, + "description": null + }, + "record_as": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Record transaction based on value specified in apply_to node. For bank accounts: If apply_to is deposits: sales_without_invoices, transfer_fund, interest_income, other_income, expense_refund, deposit. If apply_to is withdrawals: expense, transfer_fund, card_payment, owner_drawings. For credit_card accounts: If apply_to is refunds: card_payment, transfer_fund, expense_refund, refund. If apply_to is charges: expense, transfer_fund. Allowed Values: expense, deposit, refund, transfer_fund, card_payment, sales_without_invoices, expense_refund, interest_income, other_income and owner_drawings" + }, + "account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account which is involved in the rule with the target account." + }, + "customer_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer.(Applicable for sales_without_invoices,deposit, expense)" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID involved in the transaction." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies if Reference number is manual or generated from the statement. Allowed Values: manual and from_statement" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bank rules. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling/purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bank transaction.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Product Type associated with the Rule. Allowed values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority Associated with the Rule" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Associated with the Rule" + } + }, + "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 \"required\": [\n \"rule_name\",\n \"target_account_id\",\n \"apply_to\",\n \"criteria_type\",\n \"criterion\",\n \"record_as\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"rule_name\": {\n \"description\": \"Name of the Rule\",\n \"type\": \"string\",\n \"example\": \"Minimum Deposit Rule\"\n },\n \"target_account_id\": {\n \"description\": \"The account on which the rule has to be applied.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 460000000048001\n },\n \"apply_to\": {\n \"description\": \"Rule applies to either deposits or withdrawals for bank accounts and to refunds or charges for credit card account. Allowed Values : withdrawals, deposits, refunds and charges.\",\n \"type\": \"string\",\n \"example\": \"deposits\"\n },\n \"criteria_type\": {\n \"description\": \"Specifies whether all the criteria have to be satisfied or not. Allowed Values : and and or\",\n \"type\": \"string\",\n \"example\": \"and\"\n },\n \"criterion\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"field\": {\n \"description\": \"Field involved in the Criteria\",\n \"type\": \"string\",\n \"example\": \"amount\"\n },\n \"comparator\": {\n \"description\": \"Comparator used in Criteria\",\n \"type\": \"string\",\n \"example\": \"greater_than_or_equals\"\n },\n \"value\": {\n \"description\": \"Value to be compared with\",\n \"type\": \"string\",\n \"example\": \"500.00\"\n }\n }\n }\n },\n \"record_as\": {\n \"description\": \"Record transaction based on value specified in apply_to node. For bank accounts: If apply_to is deposits: sales_without_invoices, transfer_fund, interest_income, other_income, expense_refund, deposit. If apply_to is withdrawals: expense, transfer_fund, card_payment, owner_drawings. For credit_card accounts: If apply_to is refunds: card_payment, transfer_fund, expense_refund, refund. If apply_to is charges: expense, transfer_fund. Allowed Values: expense, deposit, refund, transfer_fund, card_payment, sales_without_invoices, expense_refund, interest_income, other_income and owner_drawings\",\n \"type\": \"string\",\n \"example\": \"deposit\"\n },\n \"account_id\": {\n \"description\": \"Account which is involved in the rule with the target account.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 460000000049001\n },\n \"customer_id\": {\n \"description\": \"ID of the customer.(Applicable for sales_without_invoices,deposit, expense)\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 46000000000111\n },\n \"tax_id\": {\n \"description\": \"Tax ID involved in the transaction.\",\n \"type\": \"string\",\n \"example\": \"460000000048238\"\n },\n \"reference_number\": {\n \"description\": \"Specifies if Reference number is manual or generated from the statement. Allowed Values: manual and from_statement\",\n \"type\": \"string\",\n \"example\": \"manual\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the bank rules. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling/purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the bank transaction.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Product Type associated with the Rule. Allowed values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the Tax Authority Associated with the Rule\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption Associated with the Rule\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateFixedAsset.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateFixedAsset.json new file mode 100644 index 00000000..633d6ca9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateFixedAsset.json @@ -0,0 +1,560 @@ +{ + "name": "CreateFixedAsset", + "fully_qualified_name": "ZohoBooksApi.CreateFixedAsset@0.1.0", + "description": "Create a fixed asset in Zoho Books.\n\nThis tool is used to create a fixed asset in the Zoho Books platform. It should be called when a user wants to register a new fixed asset in their accounting records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which the fixed asset is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_details", + "required": false, + "description": "JSON object containing details of the fixed asset, including asset name, type, accounts involved, depreciation method, purchase cost, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "asset_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the name of the fixed asset." + }, + "fixed_asset_type_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Associate the fixed asset with a fixed asset type by specifying fixed asset type id." + }, + "asset_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the fixed asset." + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "depreciation_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the asset\u2019s depreciation over time." + }, + "depreciation_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method" + }, + "depreciation_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the frequency of depreciation. The available frequencies are: yearly and monthly" + }, + "depreciation_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100" + }, + "total_life": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the total life of the asset (in months)" + }, + "salvage_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the remaining amount of the asset after its useful life or the value after it\u2019s fully depreciated" + }, + "depreciation_start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation start date of the asset" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the asset" + }, + "asset_cost": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the purchase cost of the asset" + }, + "computation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the computation types of assets. The available types are: prorata_basis and no_prorata" + }, + "warranty_expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the warranty expiration date of the asset" + }, + "asset_purchase_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the Purchase date of the asset" + }, + "serial_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "serial number of the asset" + }, + "dep_start_value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the value from which depreciation will be calculated." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Provide notes for the asset, if required" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Option ID of the tag" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_fixed_asset'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "fixed_asset_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "asset_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the name of the fixed asset." + }, + "fixed_asset_type_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Associate the fixed asset with a fixed asset type by specifying fixed asset type id." + }, + "asset_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the fixed asset." + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "depreciation_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the asset\u2019s depreciation over time." + }, + "depreciation_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method" + }, + "depreciation_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the frequency of depreciation. The available frequencies are: yearly and monthly" + }, + "depreciation_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100" + }, + "total_life": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the total life of the asset (in months)" + }, + "salvage_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the remaining amount of the asset after its useful life or the value after it\u2019s fully depreciated" + }, + "depreciation_start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation start date of the asset" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the asset" + }, + "asset_cost": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the purchase cost of the asset" + }, + "computation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the computation types of assets. The available types are: prorata_basis and no_prorata" + }, + "warranty_expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the warranty expiration date of the asset" + }, + "asset_purchase_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the Purchase date of the asset" + }, + "serial_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "serial number of the asset" + }, + "dep_start_value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the value from which depreciation will be calculated." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Provide notes for the asset, if required" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Option ID of the tag" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "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 \"required\": [\n \"asset_name\",\n \"fixed_asset_type_id\",\n \"asset_account_id\",\n \"asset_cost\",\n \"asset_purchase_date\"\n ],\n \"properties\": {\n \"asset_name\": {\n \"description\": \"Enter the name of the fixed asset.\",\n \"type\": \"string\",\n \"example\": \"Laptop\"\n },\n \"fixed_asset_type_id\": {\n \"description\": \"Associate the fixed asset with a fixed asset type by specifying fixed asset type id.\",\n \"type\": \"string\",\n \"example\": \"3640355000000319008\"\n },\n \"asset_account_id\": {\n \"description\": \"Enter the account id to track the fixed asset.\",\n \"type\": \"string\",\n \"example\": \"3640355000000000367\"\n },\n \"expense_account_id\": {\n \"description\": \"Enter the account id to track the expenses associated with the asset\\u2019s depreciation.The available account types are Expense and Other Expense\",\n \"type\": \"string\",\n \"example\": \"3640355000000000421\"\n },\n \"depreciation_account_id\": {\n \"description\": \"Enter the account id to track the asset\\u2019s depreciation over time.\",\n \"type\": \"string\",\n \"example\": \"3640355000000000367\"\n },\n \"depreciation_method\": {\n \"description\": \"Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method\",\n \"type\": \"string\",\n \"example\": \"declining_method\"\n },\n \"depreciation_frequency\": {\n \"description\": \"Enter the frequency of depreciation. The available frequencies are: yearly and monthly\",\n \"type\": \"string\",\n \"example\": \"yearly\"\n },\n \"depreciation_percentage\": {\n \"description\": \"Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 12\n },\n \"total_life\": {\n \"description\": \"Enter the total life of the asset (in months)\",\n \"type\": \"number\",\n \"example\": 60\n },\n \"salvage_value\": {\n \"description\": \"Enter the remaining amount of the asset after its useful life or the value after it\\u2019s fully depreciated\",\n \"type\": \"string\",\n \"format\": \"double\",\n \"example\": 100\n },\n \"depreciation_start_date\": {\n \"description\": \"Enter the depreciation start date of the asset\",\n \"type\": \"string\",\n \"example\": \"2024-12-17\"\n },\n \"description\": {\n \"description\": \"Description of the asset\",\n \"type\": \"string\"\n },\n \"asset_cost\": {\n \"description\": \"Enter the purchase cost of the asset\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1000\n },\n \"computation_type\": {\n \"description\": \"Enter the computation types of assets. The available types are: prorata_basis and no_prorata\",\n \"type\": \"string\",\n \"example\": \"prorata_basis\"\n },\n \"warranty_expiry_date\": {\n \"description\": \"Enter the warranty expiration date of the asset\",\n \"type\": \"string\",\n \"example\": \"2027-12-17\"\n },\n \"asset_purchase_date\": {\n \"description\": \"Enter the Purchase date of the asset\",\n \"type\": \"string\",\n \"example\": \"2024-12-17\"\n },\n \"serial_no\": {\n \"description\": \"serial number of the asset\",\n \"type\": \"string\",\n \"example\": \"SN-0001\"\n },\n \"dep_start_value\": {\n \"description\": \"Enter the value from which depreciation will be calculated.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1000\n },\n \"notes\": {\n \"description\": \"Provide notes for the asset, if required\",\n \"type\": \"string\",\n \"example\": \"This is a laptop Model 2024\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the tag\",\n \"type\": \"string\",\n \"example\": \"460000000094001\"\n },\n \"tag_option_id\": {\n \"description\": \"Option ID of the tag\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n }\n }\n }\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"460000000098001\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateFixedAssetType.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateFixedAssetType.json new file mode 100644 index 00000000..aaf22b2e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateFixedAssetType.json @@ -0,0 +1,300 @@ +{ + "name": "CreateFixedAssetType", + "fully_qualified_name": "ZohoBooksApi.CreateFixedAssetType@0.1.0", + "description": "Create a fixed asset type in Zoho Books.\n\nUse this tool to create a new fixed asset type in Zoho Books whenever you need to categorize assets. It facilitates asset management by defining specific asset categories.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which to create the fixed asset type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_details", + "required": false, + "description": "JSON object with details of the fixed asset type, including its name, accounts, depreciation method, frequency, percentage, total life, salvage value, and computation type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fixed_asset_type_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the name of fixed asset type" + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "depreciation_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the asset\u2019s depreciation over time." + }, + "depreciation_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method" + }, + "depreciation_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the frequency of depreciation. The available frequencies are: yearly and monthly" + }, + "depreciation_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100" + }, + "total_life": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the total life of the asset (in months)" + }, + "salvage_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the remaining amount of the asset after its useful life or the value after it\u2019s fully depreciated" + }, + "computation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the computation types of assets. The available types are: prorata_basis and no_prorata" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_fixed_asset_type'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassettypes", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "fixed_asset_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fixed_asset_type_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the name of fixed asset type" + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "depreciation_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the asset\u2019s depreciation over time." + }, + "depreciation_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method" + }, + "depreciation_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the frequency of depreciation. The available frequencies are: yearly and monthly" + }, + "depreciation_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100" + }, + "total_life": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the total life of the asset (in months)" + }, + "salvage_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the remaining amount of the asset after its useful life or the value after it\u2019s fully depreciated" + }, + "computation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the computation types of assets. The available types are: prorata_basis and no_prorata" + } + }, + "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 \"required\": [\n \"fixed_asset_type_name\",\n \"expense_account_id\",\n \"depreciation_account_id\",\n \"depreciation_method\",\n \"depreciation_frequency\",\n \"depreciation_percentage\",\n \"total_life\",\n \"salvage_value\",\n \"computation_type\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"fixed_asset_type_name\": {\n \"description\": \"Enter the name of fixed asset type\",\n \"type\": \"string\",\n \"example\": \"Machines\"\n },\n \"expense_account_id\": {\n \"description\": \"Enter the account id to track the expenses associated with the asset\\u2019s depreciation.The available account types are Expense and Other Expense\",\n \"type\": \"string\",\n \"example\": \"3640355000000000421\"\n },\n \"depreciation_account_id\": {\n \"description\": \"Enter the account id to track the asset\\u2019s depreciation over time.\",\n \"type\": \"string\",\n \"example\": \"3640355000000000367\"\n },\n \"depreciation_method\": {\n \"description\": \"Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method\",\n \"type\": \"string\",\n \"example\": \"declining_method\"\n },\n \"depreciation_frequency\": {\n \"description\": \"Enter the frequency of depreciation. The available frequencies are: yearly and monthly\",\n \"type\": \"string\",\n \"example\": \"yearly\"\n },\n \"depreciation_percentage\": {\n \"description\": \"Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 12\n },\n \"total_life\": {\n \"description\": \"Enter the total life of the asset (in months)\",\n \"type\": \"number\",\n \"example\": 60\n },\n \"salvage_value\": {\n \"description\": \"Enter the remaining amount of the asset after its useful life or the value after it\\u2019s fully depreciated\",\n \"type\": \"string\",\n \"format\": \"double\",\n \"example\": 100\n },\n \"computation_type\": {\n \"description\": \"Enter the computation types of assets. The available types are: prorata_basis and no_prorata\",\n \"type\": \"string\",\n \"example\": \"prorata_basis\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateInvoiceFromSalesOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateInvoiceFromSalesOrder.json new file mode 100644 index 00000000..9f849489 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateInvoiceFromSalesOrder.json @@ -0,0 +1,154 @@ +{ + "name": "CreateInvoiceFromSalesOrder", + "fully_qualified_name": "ZohoBooksApi.CreateInvoiceFromSalesOrder@0.1.0", + "description": "Create an invoice from a confirmed sales order.\n\nUse this tool to instantly generate an invoice based on confirmed sales orders. Ideal for automating billing processes directly from sales orders.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "sales_order_id", + "required": true, + "description": "The unique identifier of the confirmed sales order to create an invoice for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the invoice is being created. This must be a valid string ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_invoice_from_salesorder'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/fromsalesorder", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/CreateJournalEntry.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateJournalEntry.json new file mode 100644 index 00000000..2520e67d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateJournalEntry.json @@ -0,0 +1,754 @@ +{ + "name": "CreateJournalEntry", + "fully_qualified_name": "ZohoBooksApi.CreateJournalEntry@0.1.0", + "description": "Create a journal entry in Zoho Books.\n\nUse this tool to add a new journal entry in Zoho Books. It should be called when there's a need to record financial transactions manually.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "journal_entry_details", + "required": false, + "description": "JSON object containing details of the journal entry such as date, reference number, notes, type, VAT treatment, currency, line items, and other relevant fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "journal_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the journal to be recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the journal." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the journal." + }, + "journal_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Journal. Allowed values: Cash and Both ." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the journals. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "include_in_vat_return": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Journal should be included in VAT Return" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the journal. This denotes whether the journal is to be treated as goods or service. Allowed Values: digital_service, goods and service." + }, + "is_bas_adjustment": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Journal is created for BAS Adjustment" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency Associated with the Journal" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange Rate between the Currencies" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account for which journals to be recorded." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer/Vendor" + }, + "line_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description that can be given at the line item level." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Tax Exemption. Allowed Values : customer and item" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount to be recorded for the journal." + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the accounts needs to be debited or credited. Allowed Values: debit and credit." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods journal and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service journal and reverse charge VAT needs to be reported." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag Option" + } + }, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + } + }, + "description": null + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Tax Exemption. Allowed Values : customer and item" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search Journal by journal status. Allowed Values: draft and published." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_journal'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/journals", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "journal_entry_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "journal_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the journal to be recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the journal." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the journal." + }, + "journal_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Journal. Allowed values: Cash and Both ." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the journals. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "include_in_vat_return": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Journal should be included in VAT Return" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the journal. This denotes whether the journal is to be treated as goods or service. Allowed Values: digital_service, goods and service." + }, + "is_bas_adjustment": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Journal is created for BAS Adjustment" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency Associated with the Journal" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange Rate between the Currencies" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account for which journals to be recorded." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer/Vendor" + }, + "line_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description that can be given at the line item level." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Tax Exemption. Allowed Values : customer and item" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount to be recorded for the journal." + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the accounts needs to be debited or credited. Allowed Values: debit and credit." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods journal and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service journal and reverse charge VAT needs to be reported." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag Option" + } + }, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + } + }, + "description": null + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Tax Exemption. Allowed Values : customer and item" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search Journal by journal status. Allowed Values: draft and published." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "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 \"required\": [\n \"journal_date\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"journal_date\": {\n \"description\": \"Date on which the journal to be recorded.\",\n \"type\": \"string\",\n \"example\": \"2013-09-04\"\n },\n \"reference_number\": {\n \"description\": \"Reference number for the journal.\",\n \"type\": \"string\",\n \"example\": \"7355\"\n },\n \"notes\": {\n \"description\": \"Notes for the journal.\",\n \"type\": \"string\",\n \"example\": \"Loan repayment\"\n },\n \"journal_type\": {\n \"description\": \"Type of the Journal. Allowed values: Cash and Both .\",\n \"type\": \"string\",\n \"example\": \"both\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the journals. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"include_in_vat_return\": {\n \"description\": \"Check if Journal should be included in VAT Return\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"eu\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of the journal. This denotes whether the journal is to be treated as goods or service. Allowed Values: digital_service, goods and service.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_bas_adjustment\": {\n \"description\": \"Check if Journal is created for BAS Adjustment\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"currency_id\": {\n \"description\": \"ID of the Currency Associated with the Journal\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange Rate between the Currencies\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"amount\",\n \"debit_or_credit\"\n ],\n \"properties\": {\n \"account_id\": {\n \"description\": \"ID of account for which journals to be recorded.\",\n \"type\": \"string\",\n \"example\": \"460000000000361\"\n },\n \"customer_id\": {\n \"description\": \"ID of the Customer/Vendor\",\n \"type\": \"string\"\n },\n \"line_id\": {\n \"description\": \"ID of the Line\",\n \"type\": \"string\",\n \"example\": \"460000000038005\"\n },\n \"description\": {\n \"description\": \"Description that can be given at the line item level.\",\n \"type\": \"string\"\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the Tax Authority\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_type\": {\n \"description\": \"Type of the Tax Exemption. Allowed Values : customer and item\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Name of the Tax Authority\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"description\": \"ID of the tax.\",\n \"type\": \"string\"\n },\n \"amount\": {\n \"description\": \"Amount to be recorded for the journal.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 5000\n },\n \"debit_or_credit\": {\n \"description\": \"Whether the accounts needs to be debited or credited. Allowed Values: debit and credit.\",\n \"type\": \"string\",\n \"example\": \"credit\"\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods journal and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service journal and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000094001\"\n },\n \"tag_option_id\": {\n \"description\": \"ID of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000048001\"\n }\n }\n }\n },\n \"project_id\": {\n \"description\": \"ID of the Project\",\n \"type\": \"string\",\n \"example\": \"460000000898001\"\n }\n }\n }\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_type\": {\n \"description\": \"Type of the Tax Exemption. Allowed Values : customer and item\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"status\": {\n \"description\": \"Search Journal by journal status. Allowed Values: draft and published.\",\n \"type\": \"string\",\n \"example\": \"draft\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"460000000098001\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateNewZohoItem.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateNewZohoItem.json new file mode 100644 index 00000000..57ed95d3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateNewZohoItem.json @@ -0,0 +1,722 @@ +{ + "name": "CreateNewZohoItem", + "fully_qualified_name": "ZohoBooksApi.CreateNewZohoItem@0.1.0", + "description": "Create a new item in Zoho Books inventory.\n\nUse this tool to create a new item in Zoho Books. This is useful for adding products or services to your Zoho inventory for tracking purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "item_details_json", + "required": false, + "description": "JSON object detailing the item's attributes, including name, rate, description, tax details, locations, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item. Max-length [100]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Price of the item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the item. Max-length [2000]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "locations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "initial_stock": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opening stock of the item." + }, + "initial_stock_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price of the opening stock." + } + }, + "description": null + }, + "purchase_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the purchase tax rule" + }, + "sales_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the sales tax rule" + }, + "tax_percentage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percent of the tax." + }, + "sku": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SKU value of item,should be unique throughout the product" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the type of an item. Allowed values:
goods or service or digital_service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track the taxability of the item." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption. Mandatory, if is_taxable is false." + }, + "purchase_tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the purchase tax exemption. Mandatory, if is_taxable is false." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the item has to be associated with." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Max-length [25]" + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the item. Allowed values: sales,purchases,sales_and_purchases and inventory. Default value will be sales." + }, + "purchase_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase description for the item." + }, + "purchase_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase price of the item." + }, + "purchase_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the COGS account to which the item has to be associated with. Mandatory, if item_type is purchase / sales and purchase / inventory." + }, + "inventory_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the stock account to which the item has to be associated with. Mandatory, if item_type is inventory." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Preferred vendor ID." + }, + "reorder_level": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reorder level of the item." + }, + "item_tax_preferences": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "tax_specification": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set whether the tax type is intra/interstate" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an item." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_item'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/items", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "item_details_json", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item. Max-length [100]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Price of the item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the item. Max-length [2000]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "locations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "initial_stock": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opening stock of the item." + }, + "initial_stock_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price of the opening stock." + } + }, + "description": null + }, + "purchase_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the purchase tax rule" + }, + "sales_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the sales tax rule" + }, + "tax_percentage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percent of the tax." + }, + "sku": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SKU value of item,should be unique throughout the product" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the type of an item. Allowed values:
goods or service or digital_service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track the taxability of the item." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption. Mandatory, if is_taxable is false." + }, + "purchase_tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the purchase tax exemption. Mandatory, if is_taxable is false." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the item has to be associated with." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Max-length [25]" + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the item. Allowed values: sales,purchases,sales_and_purchases and inventory. Default value will be sales." + }, + "purchase_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase description for the item." + }, + "purchase_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase price of the item." + }, + "purchase_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the COGS account to which the item has to be associated with. Mandatory, if item_type is purchase / sales and purchase / inventory." + }, + "inventory_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the stock account to which the item has to be associated with. Mandatory, if item_type is inventory." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Preferred vendor ID." + }, + "reorder_level": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reorder level of the item." + }, + "item_tax_preferences": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "tax_specification": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set whether the tax type is intra/interstate" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an item." + } + }, + "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 \"required\": [\n \"name\",\n \"rate\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the item. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"rate\": {\n \"description\": \"Price of the item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"description\": {\n \"description\": \"Description for the item. Max-length [2000]\",\n \"type\": \"string\",\n \"example\": \"500GB\"\n },\n \"tax_id\": {\n \"description\": \"ID of the tax to be associated to the item.\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"in\"\n ]\n },\n \"locations\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"initial_stock\": {\n \"description\": \"Opening stock of the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"initial_stock_rate\": {\n \"description\": \"Unit price of the opening stock.\",\n \"type\": \"string\",\n \"example\": \" \"\n }\n }\n }\n },\n \"purchase_tax_rule_id\": {\n \"description\": \"Id of the purchase tax rule\",\n \"type\": \"string\",\n \"example\": 127919000000106780,\n \"x-node_available_in\": [\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sales_tax_rule_id\": {\n \"description\": \"Id of the sales tax rule\",\n \"type\": \"string\",\n \"example\": 127919000000106780,\n \"x-node_available_in\": [\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_percentage\": {\n \"description\": \"Percent of the tax.\",\n \"type\": \"string\",\n \"example\": \"70%\"\n },\n \"sku\": {\n \"description\": \"SKU value of item,should be unique throughout the product\",\n \"type\": \"string\",\n \"example\": \"s12345\"\n },\n \"product_type\": {\n \"description\": \"Specify the type of an item. Allowed values:
goods or service or digital_service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"HSN Code\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_taxable\": {\n \"description\": \"Boolean to track the taxability of the item.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption. Mandatory, if is_taxable is false.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"purchase_tax_exemption_id\": {\n \"description\": \"ID of the purchase tax exemption. Mandatory, if is_taxable is false.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"account_id\": {\n \"description\": \"ID of the account to which the item has to be associated with.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Max-length [25]\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_type\": {\n \"description\": \"Type of the item. Allowed values: sales,purchases,sales_and_purchases and inventory. Default value will be sales.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"purchase_description\": {\n \"description\": \"Purchase description for the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"purchase_rate\": {\n \"description\": \"Purchase price of the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"purchase_account_id\": {\n \"description\": \"ID of the COGS account to which the item has to be associated with. Mandatory, if item_type is purchase / sales and purchase / inventory.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"inventory_account_id\": {\n \"description\": \"ID of the stock account to which the item has to be associated with. Mandatory, if item_type is inventory.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"vendor_id\": {\n \"description\": \"Preferred vendor ID.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"reorder_level\": {\n \"description\": \"Reorder level of the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"item_tax_preferences\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_id\": {\n \"description\": \"ID of the tax to be associated to the item.\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_specification\": {\n \"description\": \"Set whether the tax type is intra/interstate\",\n \"type\": \"string\",\n \"example\": \"intra\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n },\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an item.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateOpeningBalance.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateOpeningBalance.json new file mode 100644 index 00000000..0cec4ad8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateOpeningBalance.json @@ -0,0 +1,286 @@ +{ + "name": "CreateOpeningBalance", + "fully_qualified_name": "ZohoBooksApi.CreateOpeningBalance@0.1.0", + "description": "Creates an opening balance for accounts.\n\nUse this tool to create an opening balance with specified account information in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the opening balance is being created. This ID is required to specify the target organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "opening_balance_details", + "required": false, + "description": "JSON object containing opening balance details, including date and account specifics such as account ID, debit or credit, exchange rate, currency ID, amount, and location ID.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the opening balance needs to be recorded. [yyyy-MM-dd]" + }, + "accounts": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account for which you need to record opening balance." + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit or Credit for which the amount needs to be recorded. Allowed Values: debit and credit." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the foreign currencies if involved." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account currency." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_opening_balance'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/openingbalances", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "opening_balance_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the opening balance needs to be recorded. [yyyy-MM-dd]" + }, + "accounts": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account for which you need to record opening balance." + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit or Credit for which the amount needs to be recorded. Allowed Values: debit and credit." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the foreign currencies if involved." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account currency." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + } + }, + "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 \"required\": [\n \"date\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"description\": \"Date on which the opening balance needs to be recorded. [yyyy-MM-dd]\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"accounts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"debit_or_credit\"\n ],\n \"properties\": {\n \"account_id\": {\n \"description\": \"ID of account for which you need to record opening balance.\",\n \"type\": \"string\",\n \"example\": \"460000000000358\"\n },\n \"debit_or_credit\": {\n \"description\": \"Debit or Credit for which the amount needs to be recorded. Allowed Values: debit and credit.\",\n \"type\": \"string\",\n \"example\": \"debit\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for the foreign currencies if involved.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"currency_id\": {\n \"description\": \"ID of account currency.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"amount\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateOrganizationInZohoBooks.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateOrganizationInZohoBooks.json new file mode 100644 index 00000000..b8ec7d2b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateOrganizationInZohoBooks.json @@ -0,0 +1,462 @@ +{ + "name": "CreateOrganizationInZohoBooks", + "fully_qualified_name": "ZohoBooksApi.CreateOrganizationInZohoBooks@0.1.0", + "description": "Create a new organization in Zoho Books.\n\nUse this tool to create a new organization in the Zoho Books platform. It is called when there's a need to add organizational details to Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to be created in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "organization_details", + "required": false, + "description": "JSON object containing details such as name, fiscal year start month, currency code, time zone, date format, field separator, language code, industry type, industry size, portal name, org address, remit to address, and address fields (street address, city, state, country, zip).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project." + }, + "fiscal_year_start_month": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fiscal or financial starting year of your business. Allowed Values: january, february, march, april, may, june, july, august, september, october, november and december" + }, + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Standard code for currency." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time zone in with the organization is located geographically." + }, + "date_format": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Format for representing the date." + }, + "field_separator": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field separator for components in date." + }, + "language_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "language code for organization.For instance en represents english." + }, + "industry_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Business type" + }, + "industry_size": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the industry. The possibe values could be \"small scale\", \"medium scale\", \"large scale\"" + }, + "portal_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Poratal name for the organisation. Length of the portal name should be greater than 4 and less than 31. Allowed chars [a-z][A-Z][0-9]" + }, + "org_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address of the organisation" + }, + "remit_to_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipping address of the organisation" + }, + "address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "street_address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street name of the Billing address of the Organisation" + }, + "street_address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continyed billing address of the organisation" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the organisation" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State where the organisation is located" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the Organisation" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP/Postal code of the organisation's location" + } + }, + "inner_properties": null, + "description": "Billing address of the organisation" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_organization'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/organizations", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "organization_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project." + }, + "fiscal_year_start_month": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fiscal or financial starting year of your business. Allowed Values: january, february, march, april, may, june, july, august, september, october, november and december" + }, + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Standard code for currency." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time zone in with the organization is located geographically." + }, + "date_format": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Format for representing the date." + }, + "field_separator": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field separator for components in date." + }, + "language_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "language code for organization.For instance en represents english." + }, + "industry_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Business type" + }, + "industry_size": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the industry. The possibe values could be \"small scale\", \"medium scale\", \"large scale\"" + }, + "portal_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Poratal name for the organisation. Length of the portal name should be greater than 4 and less than 31. Allowed chars [a-z][A-Z][0-9]" + }, + "org_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address of the organisation" + }, + "remit_to_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipping address of the organisation" + }, + "address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "street_address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street name of the Billing address of the Organisation" + }, + "street_address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continyed billing address of the organisation" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the organisation" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State where the organisation is located" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the Organisation" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP/Postal code of the organisation's location" + } + }, + "inner_properties": null, + "description": "Billing address of the organisation" + } + }, + "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 \"required\": [\n \"name\",\n \"currency_code\",\n \"time_zone\",\n \"portal_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the project.\",\n \"type\": \"string\",\n \"example\": \"Zillium Inc\"\n },\n \"fiscal_year_start_month\": {\n \"description\": \"Fiscal or financial starting year of your business. Allowed Values: january, february, march, april, may, june, july, august, september, october, november and december\",\n \"type\": \"string\",\n \"example\": \"january\"\n },\n \"currency_code\": {\n \"description\": \"Standard code for currency.\",\n \"type\": \"string\",\n \"example\": \"USD\"\n },\n \"time_zone\": {\n \"description\": \"Time zone in with the organization is located geographically.\",\n \"type\": \"string\",\n \"example\": \"PST\"\n },\n \"date_format\": {\n \"description\": \"Format for representing the date.\",\n \"type\": \"string\",\n \"example\": \"dd MMM yyyy\"\n },\n \"field_separator\": {\n \"description\": \"Field separator for components in date.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"language_code\": {\n \"description\": \"language code for organization.For instance en represents english.\",\n \"type\": \"string\",\n \"example\": \"en\"\n },\n \"industry_type\": {\n \"description\": \"Business type\",\n \"type\": \"string\",\n \"example\": \"Services\"\n },\n \"industry_size\": {\n \"description\": \"The size of the industry. The possibe values could be \\\"small scale\\\", \\\"medium scale\\\", \\\"large scale\\\"\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"portal_name\": {\n \"description\": \"Poratal name for the organisation. Length of the portal name should be greater than 4 and less than 31. Allowed chars [a-z][A-Z][0-9]\",\n \"type\": \"string\",\n \"example\": \"zilluminc\"\n },\n \"org_address\": {\n \"description\": \"Billing address of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"remit_to_address\": {\n \"description\": \"Shipping address of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"address\": {\n \"description\": \"Billing address of the organisation\",\n \"type\": \"object\",\n \"properties\": {\n \"street_address1\": {\n \"description\": \"Street name of the Billing address of the Organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"street_address2\": {\n \"description\": \"Continyed billing address of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"city\": {\n \"description\": \"City of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"state\": {\n \"description\": \"State where the organisation is located\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"country\": {\n \"description\": \"Country of the Organisation\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"zip\": {\n \"description\": \"ZIP/Postal code of the organisation's location\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateOrganizationUser.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateOrganizationUser.json new file mode 100644 index 00000000..17b783ce --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateOrganizationUser.json @@ -0,0 +1,220 @@ +{ + "name": "CreateOrganizationUser", + "fully_qualified_name": "ZohoBooksApi.CreateOrganizationUser@0.1.0", + "description": "Create a user for your organization in Zoho Books.\n\nThis tool facilitates the creation of a new user within your organization using Zoho Books' services. It should be called when you need to register a new user in your organization's Zoho Books account.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books where the user will be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "new_user_details", + "required": false, + "description": "A JSON object containing details for the new user, including name, email, role_id, and cost_rate.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "name of the user" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "email address of the user" + }, + "role_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly cost rate" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_user'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/users", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_user_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "name of the user" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "email address of the user" + }, + "role_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly cost rate" + } + }, + "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 \"required\": [\n \"name\",\n \"email\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"name of the user\",\n \"type\": \"string\",\n \"example\": \"Sujin Kumar\"\n },\n \"email\": {\n \"description\": \"email address of the user\",\n \"type\": \"string\",\n \"example\": \"johndavid@zilliuminc.com\"\n },\n \"role_id\": {\n \"type\": \"string\",\n \"example\": \"982000000006005\"\n },\n \"cost_rate\": {\n \"description\": \"Hourly cost rate\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateProject.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateProject.json new file mode 100644 index 00000000..1033ca81 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateProject.json @@ -0,0 +1,624 @@ +{ + "name": "CreateProject", + "fully_qualified_name": "ZohoBooksApi.CreateProject@0.1.0", + "description": "Create a new project in Zoho Books.\n\nThis tool facilitates the creation of a new project within Zoho Books. It should be called when there's a need to start a new project and integrate it into the Zoho Books system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization in Zoho Books. Required for project creation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_details", + "required": false, + "description": "JSON object detailing the project specifications, including the project name, customer ID, currency, description, billing type, rate, budget type, budget hours, budget amount, cost budget amount, user IDs, tasks, and users associated with the project.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + }, + "billing_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you bill your customer. Allowed Values: fixed_cost_for_project, based_on_project_hours, based_on_staff_hours and based_on_task_hours" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you budget. Allowed Values: total_project_cost, total_project_hours, hours_per_task and hours_per_staff" + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "budget_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Give value, if you are estimating total project revenue budget." + }, + "cost_budget_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budgeted Cost to complete this project" + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "tasks": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task description. Max-length [500]" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate of a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budgeting." + } + }, + "description": null + }, + "users": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "is_current_user": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email of the user. Max-length [100]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "total_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "un_billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_project'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "project_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + }, + "billing_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you bill your customer. Allowed Values: fixed_cost_for_project, based_on_project_hours, based_on_staff_hours and based_on_task_hours" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you budget. Allowed Values: total_project_cost, total_project_hours, hours_per_task and hours_per_staff" + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "budget_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Give value, if you are estimating total project revenue budget." + }, + "cost_budget_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budgeted Cost to complete this project" + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "tasks": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task description. Max-length [500]" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate of a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budgeting." + } + }, + "description": null + }, + "users": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "is_current_user": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email of the user. Max-length [100]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "total_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "un_billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "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 \"required\": [\n \"project_name\",\n \"customer_id\",\n \"billing_type\",\n \"user_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"project_name\": {\n \"description\": \"Name of the project. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Network Distribution\"\n },\n \"customer_id\": {\n \"description\": \"ID of the customer.\",\n \"type\": \"string\",\n \"example\": \"460000000044001\"\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"example\": \"460000000098001\"\n },\n \"description\": {\n \"description\": \"Project description. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \"Distribution for the system of intermediaries between the producer of goods and/or services and the final user\"\n },\n \"billing_type\": {\n \"description\": \"The way you bill your customer. Allowed Values: fixed_cost_for_project, based_on_project_hours, based_on_staff_hours and based_on_task_hours\",\n \"type\": \"string\",\n \"example\": \"based_on_task_hours\"\n },\n \"rate\": {\n \"description\": \"Hourly rate for a task.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_type\": {\n \"description\": \"The way you budget. Allowed Values: total_project_cost, total_project_hours, hours_per_task and hours_per_staff\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_amount\": {\n \"description\": \"Give value, if you are estimating total project revenue budget.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"cost_budget_amount\": {\n \"description\": \"Budgeted Cost to complete this project\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \"1000.00\"\n },\n \"user_id\": {\n \"description\": \"ID of the user to be added to the project.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"tasks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"task_name\"\n ],\n \"properties\": {\n \"task_name\": {\n \"description\": \"Name of the task. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"description\": {\n \"description\": \"Task description. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"rate\": {\n \"description\": \"Hourly rate of a task.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"budget_hours\": {\n \"description\": \"Task budgeting.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n }\n }\n }\n },\n \"users\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"user_id\": {\n \"description\": \"ID of the user to be added to the project.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"is_current_user\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"user_name\": {\n \"description\": \"Name of the user. Max-length [200]\",\n \"type\": \"string\",\n \"example\": \"John David\"\n },\n \"email\": {\n \"description\": \"Email of the user. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"johndavid@zilliuminc.com\"\n },\n \"user_role\": {\n \"description\": \"Role to be assigned. Allowed Values: staff, admin and timesheetstaff\",\n \"type\": \"string\",\n \"example\": \"admin\"\n },\n \"status\": {\n \"type\": \"string\",\n \"example\": \"active\"\n },\n \"rate\": {\n \"description\": \"Hourly rate for a task.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"total_hours\": {\n \"type\": \"string\",\n \"example\": \"12:26\"\n },\n \"billed_hours\": {\n \"type\": \"string\",\n \"example\": \"12:27\"\n },\n \"un_billed_hours\": {\n \"type\": \"string\",\n \"example\": \"00:00\"\n },\n \"cost_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \"10.00\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRecurringBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRecurringBill.json new file mode 100644 index 00000000..66eea88e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRecurringBill.json @@ -0,0 +1,1204 @@ +{ + "name": "CreateRecurringBill", + "fully_qualified_name": "ZohoBooksApi.CreateRecurringBill@0.1.0", + "description": "Create a recurring bill in Zoho Books.\n\nThis tool creates a recurring bill in Zoho Books. Use it to automate periodic billing tasks and ensure payments are scheduled consistently.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books for which the recurring bill will be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_bill_details", + "required": false, + "description": "A JSON object containing details for creating a recurring bill such as vendor ID, currency ID, recurrence name, start and end dates, line items, GST treatment, and more. Ensure to follow the expected format and include all necessary information.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the bill has to be created." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency" + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Bill. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring bill. Bills will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring bill has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "is_abn_quoted": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "abn": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Applicable for transactions where you pay reverse charge" + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the price book." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line Item" + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Item" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied to the line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if entity is Billable" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a recurrence bill." + }, + "is_tds_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if TDS is applied" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the Bill" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and Conditions for the Bill" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number Referring to Payment Terms" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the recurrence. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the discount account." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify discount applied in before /after tax." + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for repeat_every" + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for recurrence_frequency" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_recurring_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringbills", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "recurring_bill_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the bill has to be created." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency" + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Bill. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring bill. Bills will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring bill has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "is_abn_quoted": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "abn": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Applicable for transactions where you pay reverse charge" + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the price book." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line Item" + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Item" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied to the line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if entity is Billable" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a recurrence bill." + }, + "is_tds_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if TDS is applied" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the Bill" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and Conditions for the Bill" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number Referring to Payment Terms" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the recurrence. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the discount account." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify discount applied in before /after tax." + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for repeat_every" + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for recurrence_frequency" + } + }, + "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 \"required\": [\n \"vendor_id\",\n \"recurrence_name\",\n \"start_date\",\n \"repeat_every\",\n \"recurrence_frequency\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"ID of the vendor the bill has to be created.\",\n \"type\": \"string\",\n \"example\": \"460000000038029\"\n },\n \"currency_id\": {\n \"description\": \"ID of the Currency\",\n \"type\": \"string\",\n \"example\": \"460000000000099\"\n },\n \"recurrence_name\": {\n \"description\": \"Name of the Recurring Bill. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Monthly Rental\"\n },\n \"start_date\": {\n \"description\": \"Start date of the recurring bill. Bills will not be generated for dates prior to the current date. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \"2013-11-18\"\n },\n \"end_date\": {\n \"description\": \"Date on which recurring bill has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \"2013-12-18\"\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_reg_no\": {\n \"description\": \"For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_abn_quoted\": {\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"abn\": {\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"Applicable for transactions where you pay reverse charge\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Enter ID of the price book.\",\n \"type\": \"string\",\n \"example\": 460000000038090\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of a recurrence bill.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"description\": \"ID of the Line Item\",\n \"type\": \"string\",\n \"example\": \"460000000067009\"\n },\n \"item_id\": {\n \"description\": \"ID of the Item\",\n \"type\": \"string\",\n \"example\": \"460000000054135\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"account_id\": {\n \"description\": \"ID of the account associated with the line item.\",\n \"type\": \"string\",\n \"example\": \"460000000000403\"\n },\n \"description\": {\n \"description\": \"Description of the line item.\",\n \"type\": \"string\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Reverse charge tax ID\",\n \"type\": \"string\",\n \"example\": 460000000038056,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"quantity\": {\n \"description\": \"Quantity of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied to the line item.\",\n \"type\": \"string\",\n \"example\": \"460000000027005\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tds_tax_id\": {\n \"description\": \"TDS ID of the tax group applied to the line item\",\n \"type\": \"string\",\n \"example\": \"460000000027001\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_order\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"eu\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unit\": {\n \"description\": \"Unit of the Item\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054178\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054180\"\n }\n }\n }\n },\n \"is_billable\": {\n \"description\": \"Check if entity is Billable\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"project_id\": {\n \"description\": \"ID of the Project\",\n \"type\": \"string\"\n },\n \"customer_id\": {\n \"description\": \"ID of the Customer\",\n \"type\": \"string\"\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"serial_numbers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"is_tds_applied\": {\n \"description\": \"Check if TDS is applied\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"in\",\n \"global\",\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"notes\": {\n \"description\": \"Notes for the Bill\",\n \"type\": \"string\",\n \"example\": \"Thanks for your business.\"\n },\n \"terms\": {\n \"description\": \"Terms and Conditions for the Bill\",\n \"type\": \"string\",\n \"example\": \"Terms and conditions apply.\"\n },\n \"payment_terms\": {\n \"description\": \"Number Referring to Payment Terms\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"payment_terms_label\": {\n \"description\": \"Label of the Payment Terms\",\n \"type\": \"string\",\n \"example\": \"Due on Receipt\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"discount\": {\n \"description\": \"Discount applied to the recurrence. It can be either in % or in amount. E.g: 12.5% or 190.\",\n \"type\": \"string\",\n \"example\": \"30%\"\n },\n \"discount_account_id\": {\n \"description\": \"ID of the account associated with the discount account.\",\n \"type\": \"string\",\n \"example\": \"460000000000403\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"To specify discount applied in before /after tax.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"repeat_every\": {\n \"description\": \"Description for repeat_every\",\n \"type\": \"string\",\n \"example\": \"\"\n },\n \"recurrence_frequency\": {\n \"description\": \"Description for recurrence_frequency\",\n \"type\": \"string\",\n \"example\": \"\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRecurringExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRecurringExpense.json new file mode 100644 index 00000000..7a63a462 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRecurringExpense.json @@ -0,0 +1,816 @@ +{ + "name": "CreateRecurringExpense", + "fully_qualified_name": "ZohoBooksApi.CreateRecurringExpense@0.1.0", + "description": "Create a recurring expense in Zoho Books.\n\nUse this tool to create a recurring expense in Zoho Books. It allows you to automate expense tracking by setting expenses to recur at specified intervals.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This ID is necessary to specify which organization's records to create the recurring expense under.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_expense_details", + "required": false, + "description": "JSON object containing details of the recurring expense, such as account ID, recurrence frequency, GST number, line items, and other configuration details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Expense. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by description. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the code for tax exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the tax exemption" + } + }, + "description": null + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer id." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a recurring-expense." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_recurring_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "recurring_expense_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Expense. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by description. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the code for tax exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the tax exemption" + } + }, + "description": null + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer id." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a recurring-expense." + } + }, + "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 \"required\": [\n \"account_id\",\n \"recurrence_name\",\n \"start_date\",\n \"recurrence_frequency\",\n \"repeat_every\",\n \"amount\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"account_id\": {\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"recurrence_name\": {\n \"description\": \"Name of the Recurring Expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Monthly Rental\"\n },\n \"start_date\": {\n \"description\": \"Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \"2016-11-19T00:00:00.000Z\"\n },\n \"end_date\": {\n \"description\": \"Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"recurrence_frequency\": {\n \"type\": \"string\",\n \"example\": \"months\"\n },\n \"repeat_every\": {\n \"type\": \"string\",\n \"example\": 1\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"string\",\n \"example\": 982000000567254,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"type\": \"string\",\n \"example\": 10763000000140068\n },\n \"account_id\": {\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"description\": {\n \"description\": \"Search recurring expenses by description. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"amount\": {\n \"description\": \"Recurring Expense amount.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"item_order\": {\n \"type\": \"string\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"in\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"string\",\n \"example\": 982000000567254,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Enter the code for tax exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Enter ID of the tax exemption\",\n \"type\": \"string\",\n \"example\": 982000000567267,\n \"x-node_available_in\": [\n \"in\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n },\n \"amount\": {\n \"description\": \"Recurring Expense amount.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"eu_vat_not_registered\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"in\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"is_inclusive_tax\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_billable\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"customer_id\": {\n \"description\": \"Search expenses by customer id.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"project_id\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"exchange_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for a recurring-expense.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRecurringInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRecurringInvoice.json new file mode 100644 index 00000000..fb4cea0b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRecurringInvoice.json @@ -0,0 +1,1602 @@ +{ + "name": "CreateRecurringInvoice", + "fully_qualified_name": "ZohoBooksApi.CreateRecurringInvoice@0.1.0", + "description": "Create a new recurring invoice in Zoho Books.\n\nThis tool creates a new recurring invoice within Zoho Books. Use this tool when you need to automate the billing of customers on a regular schedule. It returns the details of the invoice created, enabling tracking and management of recurring payments.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the recurring invoice is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_invoice_details", + "required": false, + "description": "JSON object containing details for the recurring invoice, such as customer ID, currency ID, line items, billing address, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name for the recurring profile given by the user. Max-length [100]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Order number of the Recurring Invoice." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the recurring invoice is raised." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currenct id of the currency" + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the vat treatment for the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose false for PPU-Single Payments and true for PPD-Installment Payments" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice starts." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice expires." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "weeks" + ], + "properties": null, + "inner_properties": null, + "description": "The frequency of time interval at which the invoice is to be generated." + }, + "repeat_every": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The period between every recurrency frequency." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The line item id" + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item included." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the line item. max-length [100]" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total rate raised by this item. This would be the multiplicative product of item price and quantity." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group associated to the recurring invoice." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header" + } + }, + "description": "Line items of an invoice." + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Data type of the custom field." + } + }, + "description": null + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the customer." + }, + "billing_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": null + }, + "shipping_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": null + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice template." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms in days. E.g: 15,30,60. Invoice due date will be calculated based on this." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to overridethe default payment terms label. Default value for 15 days is \"Next 15 days\"." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency associated with the customer." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the invoice. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify how the discount has to applied. Either before or after the calculation of tax." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "How the discount is specified. Allowed values: entity_level and item_level." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique string generated for the item for which invoice is to be sent." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the line item. max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A small description about the item. Max-length [2000]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item included." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group items together." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the sales person" + }, + "shipping_charge": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipping charges applied to the invoice." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Adjustments made to the invoice." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customize the adjustment description. E.g: Rounding off." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_recurring_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "recurring_invoice_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name for the recurring profile given by the user. Max-length [100]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Order number of the Recurring Invoice." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the recurring invoice is raised." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currenct id of the currency" + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the vat treatment for the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose false for PPU-Single Payments and true for PPD-Installment Payments" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice starts." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice expires." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "weeks" + ], + "properties": null, + "inner_properties": null, + "description": "The frequency of time interval at which the invoice is to be generated." + }, + "repeat_every": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The period between every recurrency frequency." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The line item id" + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item included." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the line item. max-length [100]" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total rate raised by this item. This would be the multiplicative product of item price and quantity." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group associated to the recurring invoice." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header" + } + }, + "description": "Line items of an invoice." + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Data type of the custom field." + } + }, + "description": null + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the customer." + }, + "billing_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": null + }, + "shipping_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": null + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice template." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms in days. E.g: 15,30,60. Invoice due date will be calculated based on this." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to overridethe default payment terms label. Default value for 15 days is \"Next 15 days\"." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency associated with the customer." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the invoice. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify how the discount has to applied. Either before or after the calculation of tax." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "How the discount is specified. Allowed values: entity_level and item_level." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique string generated for the item for which invoice is to be sent." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the line item. max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A small description about the item. Max-length [2000]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item included." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group items together." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the sales person" + }, + "shipping_charge": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipping charges applied to the invoice." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Adjustments made to the invoice." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customize the adjustment description. E.g: Rounding off." + } + }, + "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 \"required\": [\n \"recurrence_name\",\n \"customer_id\",\n \"recurrence_frequency\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"recurrence_name\": {\n \"description\": \"Unique name for the recurring profile given by the user. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"MonthlyInvoice\"\n },\n \"reference_number\": {\n \"description\": \"The Order number of the Recurring Invoice.\",\n \"type\": \"string\",\n \"example\": \"12314\"\n },\n \"customer_id\": {\n \"description\": \"Customer ID of the customer for whom the recurring invoice is raised.\",\n \"type\": \"string\",\n \"example\": \"903000000000099\"\n },\n \"currency_id\": {\n \"description\": \"The currenct id of the currency\",\n \"type\": \"string\",\n \"example\": \"982000000000190\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"overseas\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"Choose whether the vat treatment for the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_usage\": {\n \"description\": \"Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll.\",\n \"type\": \"string\",\n \"example\": \"acquisition_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"allow_partial_payments\": {\n \"description\": \"Choose false for PPU-Single Payments and true for PPD-Installment Payments\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"start_date\": {\n \"description\": \"The date on which the recurring invoice starts.\",\n \"type\": \"string\",\n \"example\": \"2016-06-12\"\n },\n \"end_date\": {\n \"description\": \"The date on which the recurring invoice expires.\",\n \"type\": \"string\",\n \"example\": \"2017-06-12\"\n },\n \"recurrence_frequency\": {\n \"description\": \"The frequency of time interval at which the invoice is to be generated.\",\n \"type\": \"string\",\n \"enum\": [\n \"weeks\"\n ],\n \"example\": \"weeks\"\n },\n \"repeat_every\": {\n \"description\": \"The period between every recurrency frequency.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"description\": \"The line item id\",\n \"type\": \"string\",\n \"example\": \"982000000567021\"\n },\n \"quantity\": {\n \"description\": \"Quantity of the item included.\",\n \"type\": \"integer\",\n \"format\": \"int32\",\n \"example\": 1\n },\n \"name\": {\n \"description\": \"The name of the line item. max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"item_total\": {\n \"description\": \"Total rate raised by this item. This would be the multiplicative product of item price and quantity.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 100\n },\n \"product_type\": {\n \"description\": \"Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"box\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tags\": {\n \"description\": \"Filter all your reports based on the tag\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 982000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 982000000002670\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group associated to the recurring invoice.\",\n \"example\": \"903000000000356\"\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax or TDS tax group associated to the recurring invoice.\",\n \"type\": \"string\",\n \"example\": \"903000000000357\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"header_name\": {\n \"description\": \"Name of the item header\",\n \"type\": \"string\",\n \"example\": \"Electronic devices\"\n }\n }\n }\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group associated to the recurring invoice.\",\n \"example\": \"903000000000356\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": \"129890\"\n },\n \"label\": {\n \"description\": \"Label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"label\"\n },\n \"data_type\": {\n \"description\": \"Data type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"text\"\n }\n }\n }\n },\n \"email\": {\n \"description\": \"Email address of the customer.\",\n \"type\": \"string\",\n \"example\": \"benjamin.george@bowmanfurniture.com\"\n },\n \"billing_address\": {\n \"type\": \"object\",\n \"properties\": {\n \"address\": {\n \"description\": \"Billing address for the invoice\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd, Suite 310\"\n },\n \"street2\": {\n \"type\": \"string\",\n \"example\": \"McMillan Avenue\"\n },\n \"city\": {\n \"description\": \"City of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Zip code of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"94588\"\n },\n \"country\": {\n \"description\": \"Country of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Customer's fax number.\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n }\n }\n },\n \"shipping_address\": {\n \"type\": \"object\",\n \"properties\": {\n \"address\": {\n \"description\": \"Billing address for the invoice\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd, Suite 310\"\n },\n \"city\": {\n \"description\": \"City of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Zip code of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"94588\"\n },\n \"country\": {\n \"description\": \"Country of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Customer's fax number.\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n }\n }\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"template_id\": {\n \"description\": \"Unique ID of the recurring invoice template.\",\n \"type\": \"string\",\n \"example\": \"90300000001336\"\n },\n \"payment_terms\": {\n \"description\": \"Payment terms in days. E.g: 15,30,60. Invoice due date will be calculated based on this.\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"payment_terms_label\": {\n \"description\": \"Used to overridethe default payment terms label. Default value for 15 days is \\\"Next 15 days\\\".\",\n \"type\": \"string\",\n \"example\": \"Next 15 days\"\n },\n \"tax_authority_id\": {\n \"description\": \"Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for the currency associated with the customer.\",\n \"type\": \"string\",\n \"example\": \"5.5\"\n },\n \"payment_options\": {\n \"type\": \"object\",\n \"properties\": {\n \"payment_gateways\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"configured\": {\n \"description\": \"Boolean check to see if a payment gateway ahs been configured\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"additional_field1\": {\n \"description\": \"Paypal payment method. Allowed Values: standard and adaptive\",\n \"type\": \"string\",\n \"example\": \"standard\"\n },\n \"gateway_name\": {\n \"description\": \"Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree\",\n \"type\": \"string\",\n \"example\": \"paypal\"\n }\n }\n }\n }\n }\n },\n \"discount\": {\n \"description\": \"Discount applied to the invoice. It can be either in % or in amount. E.g: 12.5% or 190.\",\n \"type\": \"string\",\n \"example\": \"30%\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"Used to specify how the discount has to applied. Either before or after the calculation of tax.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"How the discount is specified. Allowed values: entity_level and item_level.\",\n \"type\": \"string\",\n \"example\": \"entity level\"\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"item_id\": {\n \"description\": \"Unique string generated for the item for which invoice is to be sent.\",\n \"type\": \"string\",\n \"example\": \"90300000081501\"\n },\n \"name\": {\n \"description\": \"The name of the line item. max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"A small description about the item. Max-length [2000]\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"quantity\": {\n \"description\": \"Quantity of the item included.\",\n \"type\": \"integer\",\n \"format\": \"int32\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of the line item. E.g: kgs, Nos.\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group items together.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"salesperson_name\": {\n \"description\": \"Name of the sales person\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"shipping_charge\": {\n \"description\": \"Shipping charges applied to the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment\": {\n \"description\": \"Adjustments made to the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Customize the adjustment description. E.g: Rounding off.\",\n \"type\": \"string\",\n \"example\": \"Rounding off\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRetainerInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRetainerInvoice.json new file mode 100644 index 00000000..86f1717c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateRetainerInvoice.json @@ -0,0 +1,633 @@ +{ + "name": "CreateRetainerInvoice", + "fully_qualified_name": "ZohoBooksApi.CreateRetainerInvoice@0.1.0", + "description": "Create a retainer invoice for a customer.\n\nUse this tool to create a retainer invoice for a customer through Zoho Books. It should be called when you need to generate an invoice requiring advance payment or retaining fees for services or products.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the retainer invoice is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_details", + "required": false, + "description": "Details for the retainer invoice, including customer ID, reference number, date, contact persons, custom fields, notes, terms, location ID, line items, payment options, template ID, and place of supply.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer the retainer invoice has to be created." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The reference number of the retainer invoice. Max-length [100]" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of creation of the retainer invoice." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The index of the custom field" + }, + "show_on_pdf": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean value to check if the custom field is to be dispplayed on the pdf." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The label of the custom field." + } + }, + "description": "Custom fields for a reatiner invoice." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The notes added below expressing gratitude or for conveying some information." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The terms added below expressing gratitude or for conveying some information." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the line items. Max-length [2000]" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The order of the line item_order" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + } + }, + "description": "Line items of an invoice." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the retainer invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the retainer invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the pdf template associated with the retainer invoice." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to ignore automatic invoice number generation and manually input the invoice number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto invoice number generation for this invoice. This mandates the invoice number. Allowed values true and false" + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_retainer_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto invoice number generation for this invoice. This mandates the invoice number. Allowed values true and false", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto invoice number generation for this invoice. This mandates the invoice number. Allowed values true and false" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "retainer_invoice_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer the retainer invoice has to be created." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The reference number of the retainer invoice. Max-length [100]" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of creation of the retainer invoice." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The index of the custom field" + }, + "show_on_pdf": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean value to check if the custom field is to be dispplayed on the pdf." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The label of the custom field." + } + }, + "description": "Custom fields for a reatiner invoice." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The notes added below expressing gratitude or for conveying some information." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The terms added below expressing gratitude or for conveying some information." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the line items. Max-length [2000]" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The order of the line item_order" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + } + }, + "description": "Line items of an invoice." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the retainer invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the retainer invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the pdf template associated with the retainer invoice." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"ID of the customer the retainer invoice has to be created.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"reference_number\": {\n \"description\": \"The reference number of the retainer invoice. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"date\": {\n \"description\": \"The date of creation of the retainer invoice.\",\n \"type\": \"string\",\n \"example\": \"2013-11-17\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for a reatiner invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"The index of the custom field\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"show_on_pdf\": {\n \"description\": \"Boolean value to check if the custom field is to be dispplayed on the pdf.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"value\": {\n \"type\": \"string\",\n \"example\": \"The value of the custom field\"\n },\n \"label\": {\n \"description\": \"The label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Delivery Date\"\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"The notes added below expressing gratitude or for conveying some information.\",\n \"type\": \"string\",\n \"example\": \"Looking forward for your business.\"\n },\n \"terms\": {\n \"description\": \"The terms added below expressing gratitude or for conveying some information.\",\n \"type\": \"string\",\n \"example\": \"Terms & Conditions apply\"\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"The description of the line items. Max-length [2000]\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"item_order\": {\n \"description\": \"The order of the line item_order\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n }\n }\n }\n },\n \"payment_options\": {\n \"description\": \"Payment options for the retainer invoice, online payment gateways and bank accounts. Will be displayed in the pdf.\",\n \"type\": \"object\",\n \"properties\": {\n \"payment_gateways\": {\n \"description\": \"Online payment gateways through which payment can be made.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"configured\": {\n \"description\": \"Boolean check to see if a payment gateway ahs been configured\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"additional_field1\": {\n \"description\": \"Paypal payment method. Allowed Values: standard and adaptive\",\n \"type\": \"string\",\n \"example\": \"standard\"\n },\n \"gateway_name\": {\n \"description\": \"Name of the payment gateway associated with the retainer invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree\",\n \"type\": \"string\",\n \"example\": \"paypal\"\n }\n }\n }\n }\n }\n },\n \"template_id\": {\n \"description\": \"ID of the pdf template associated with the retainer invoice.\",\n \"type\": \"string\",\n \"example\": 982000000000143\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateSalesOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateSalesOrder.json new file mode 100644 index 00000000..02830509 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateSalesOrder.json @@ -0,0 +1,1628 @@ +{ + "name": "CreateSalesOrder", + "fully_qualified_name": "ZohoBooksApi.CreateSalesOrder@0.1.0", + "description": "Create a sales order for a customer.\n\nThis tool creates a sales order for a customer using Zoho Books. It should be called when you need to generate a new sales order in your accounting system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization for which the sales order is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "total_number_of_files", + "required": false, + "description": "Specify the total number of files to be attached to the sales order.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "inferrable": true, + "http_endpoint_parameter_name": "totalFiles" + }, + { + "name": "document_attachment", + "required": false, + "description": "A document to be attached to the sales order. Provide as a string containing the document details or content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "inferrable": true, + "http_endpoint_parameter_name": "doc" + }, + { + "name": "sales_order_request_body", + "required": false, + "description": "JSON object containing all necessary sales order details. Includes customer ID, currency, contact persons, dates, line items, and additional order specifications. Ensure all required fields are correctly structured according to the API documentation.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer receiving the sales order. This ID links the order to a specific customer account and determines billing information, payment terms, pricing rules, and tax calculations based on customer settings. Can be fetched from the Get Contacts API or retrieved from existing customer records in your organization." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the sales order transaction. Determines pricing display, exchange rate calculations, and affects financial reporting. If not specified, the organization default currency will be used automatically. Can be fetched from the Get Currencies API or retrieved from your organization currency settings." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the sales order was created in YYYY-MM-DD format. This date affects order processing timelines, delivery schedules, payment terms calculation, and appears on customer-facing documents and internal reports." + }, + "shipment_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected or actual date when goods will be shipped to the customer in YYYY-MM-DD format. Used for delivery planning, customer communication, inventory management, and tracking order fulfillment timelines." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "salesperson_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the salesperson responsible for this sales order. Links the order to a specific sales representative customer relationship management, and sales reporting purposes." + }, + "merchant_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the merchant" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group applied" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item e.g. kgs, Nos." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order items." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of a sales order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form text field containing additional information, instructions, or comments related to the sales order. This field supports internal documentation, customer-specific requirements, special handling instructions, and inter-departmental communication for order processing workflows." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contractual terms and conditions governing the sales order transaction. Defines payment obligations, delivery specifications, warranty provisions, liability limitations, and other legal stipulations that establish the binding agreement between the organization and customer for this specific transaction." + }, + "billing_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer billing address entity. Determines the address used for invoice generation, payment processing, tax jurisdiction calculations, and financial record-keeping. Must correspond to a valid address record associated with the specified customer account." + }, + "shipping_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer shipping address entity. Specifies the delivery destination for goods fulfillment, logistics planning, shipping cost calculations, and delivery confirmation processes. Must correspond to a valid address record within the customer address registry." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "crm_custom_reference_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the sales order. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the sales order.Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "salesorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique alphanumeric identifier for the sales order entity. Required when automatic numbering is disabled in organization settings. Must be unique within the organization and follows the configured numbering sequence pattern for sales order identification and tracking." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference identifier for cross-referencing with customer purchase orders, internal tracking systems, or third-party applications. Used for order reconciliation, customer communication, and integration with external business systems and workflows." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency conversion rate from the transaction currency to the organization base currency. Required for multi-currency transactions to ensure accurate financial reporting, profit calculations, and tax computations in the base currency denomination." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Full name of the sales representative assigned to this sales order. Automatically populated when salesperson_id is specified." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Notes for the Sales Order" + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Terms of the Sales Order" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Authority's name." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "shipping_charge": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional cost associated with product delivery and logistics services. Applied to the sales order total and affects final pricing calculations, profit margins, and customer billing. Supports decimal precision for accurate cost allocation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Manual modification amount applied to the sales order total for rounding corrections, special pricing arrangements, or other business-specific adjustments. Supports positive and negative values for additions or deductions from the order total." + }, + "delivery_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specification of the transportation and delivery mechanism for order fulfillment. Determines shipping costs, delivery timelines, carrier selection, and customer communication regarding order status and tracking information." + }, + "estimate_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the estimate associated with the Sales Order" + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag determining the sequence of discount application in tax calculations. When true, discount is applied before tax computation; when false, discount is applied after tax calculation. Affects final pricing accuracy and tax compliance reporting." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Classification of discount application scope within the sales order. entity_level applies discount to the entire order total, while item_level applies discount to individual line items. Determines discount calculation methodology and affects pricing structure." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Textual explanation for the adjustment amount applied to the sales order. Provides audit trail documentation, justification for pricing modifications, and contextual information for financial reporting and compliance verification purposes." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricing structure applied to the sales order. Determines item rates, discount rules, and pricing policies based on customer segments, volume tiers, or promotional campaigns. Can be retrieved from the Pricebooks API." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the PDF document template used for sales order presentation. Determines document layout, branding elements, formatting specifications, and visual presentation standards for customer-facing documents and printed materials." + }, + "documents": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "zcrm_potential_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking the sales order to a Zoho CRM potential record." + }, + "zcrm_potential_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Descriptive name of the Zoho CRM potential record associated with this sales order." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to ignore auto sales order number generation, requiring manual sales order number entry.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto sales order number generation for this sales order. This mandates the sales order number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + }, + { + "name": "can_send_via_email", + "required": false, + "description": "Set to true if the file can be sent via email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Can the file be sent in mail." + }, + "inferrable": true, + "http_endpoint_parameter_name": "can_send_in_mail" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_sales_order'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto sales order number generation for this sales order. This mandates the sales order number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto sales order number generation for this sales order. This mandates the sales order number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "can_send_in_mail", + "tool_parameter_name": "can_send_via_email", + "description": "Can the file be sent in mail.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Can the file be sent in mail." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "totalFiles", + "tool_parameter_name": "total_number_of_files", + "description": "Total number of files.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "doc", + "tool_parameter_name": "document_attachment", + "description": "Document that is to be attached", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "sales_order_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer receiving the sales order. This ID links the order to a specific customer account and determines billing information, payment terms, pricing rules, and tax calculations based on customer settings. Can be fetched from the Get Contacts API or retrieved from existing customer records in your organization." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the sales order transaction. Determines pricing display, exchange rate calculations, and affects financial reporting. If not specified, the organization default currency will be used automatically. Can be fetched from the Get Currencies API or retrieved from your organization currency settings." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the sales order was created in YYYY-MM-DD format. This date affects order processing timelines, delivery schedules, payment terms calculation, and appears on customer-facing documents and internal reports." + }, + "shipment_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected or actual date when goods will be shipped to the customer in YYYY-MM-DD format. Used for delivery planning, customer communication, inventory management, and tracking order fulfillment timelines." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "salesperson_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the salesperson responsible for this sales order. Links the order to a specific sales representative customer relationship management, and sales reporting purposes." + }, + "merchant_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the merchant" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group applied" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item e.g. kgs, Nos." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order items." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of a sales order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form text field containing additional information, instructions, or comments related to the sales order. This field supports internal documentation, customer-specific requirements, special handling instructions, and inter-departmental communication for order processing workflows." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contractual terms and conditions governing the sales order transaction. Defines payment obligations, delivery specifications, warranty provisions, liability limitations, and other legal stipulations that establish the binding agreement between the organization and customer for this specific transaction." + }, + "billing_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer billing address entity. Determines the address used for invoice generation, payment processing, tax jurisdiction calculations, and financial record-keeping. Must correspond to a valid address record associated with the specified customer account." + }, + "shipping_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer shipping address entity. Specifies the delivery destination for goods fulfillment, logistics planning, shipping cost calculations, and delivery confirmation processes. Must correspond to a valid address record within the customer address registry." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "crm_custom_reference_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the sales order. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the sales order.Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "salesorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique alphanumeric identifier for the sales order entity. Required when automatic numbering is disabled in organization settings. Must be unique within the organization and follows the configured numbering sequence pattern for sales order identification and tracking." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference identifier for cross-referencing with customer purchase orders, internal tracking systems, or third-party applications. Used for order reconciliation, customer communication, and integration with external business systems and workflows." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency conversion rate from the transaction currency to the organization base currency. Required for multi-currency transactions to ensure accurate financial reporting, profit calculations, and tax computations in the base currency denomination." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Full name of the sales representative assigned to this sales order. Automatically populated when salesperson_id is specified." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Notes for the Sales Order" + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Terms of the Sales Order" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Authority's name." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "shipping_charge": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional cost associated with product delivery and logistics services. Applied to the sales order total and affects final pricing calculations, profit margins, and customer billing. Supports decimal precision for accurate cost allocation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Manual modification amount applied to the sales order total for rounding corrections, special pricing arrangements, or other business-specific adjustments. Supports positive and negative values for additions or deductions from the order total." + }, + "delivery_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specification of the transportation and delivery mechanism for order fulfillment. Determines shipping costs, delivery timelines, carrier selection, and customer communication regarding order status and tracking information." + }, + "estimate_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the estimate associated with the Sales Order" + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag determining the sequence of discount application in tax calculations. When true, discount is applied before tax computation; when false, discount is applied after tax calculation. Affects final pricing accuracy and tax compliance reporting." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Classification of discount application scope within the sales order. entity_level applies discount to the entire order total, while item_level applies discount to individual line items. Determines discount calculation methodology and affects pricing structure." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Textual explanation for the adjustment amount applied to the sales order. Provides audit trail documentation, justification for pricing modifications, and contextual information for financial reporting and compliance verification purposes." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricing structure applied to the sales order. Determines item rates, discount rules, and pricing policies based on customer segments, volume tiers, or promotional campaigns. Can be retrieved from the Pricebooks API." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the PDF document template used for sales order presentation. Determines document layout, branding elements, formatting specifications, and visual presentation standards for customer-facing documents and printed materials." + }, + "documents": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "zcrm_potential_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking the sales order to a Zoho CRM potential record." + }, + "zcrm_potential_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Descriptive name of the Zoho CRM potential record associated with this sales order." + } + }, + "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 \"required\": [\n \"customer_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier for the customer receiving the sales order. This ID links the order to a specific customer account and determines billing information, payment terms, pricing rules, and tax calculations based on customer settings. Can be fetched from the Get Contacts API or retrieved from existing customer records in your organization.\",\n \"type\": \"string\",\n \"example\": \"460000000017138\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the sales order transaction. Determines pricing display, exchange rate calculations, and affects financial reporting. If not specified, the organization default currency will be used automatically. Can be fetched from the Get Currencies API or retrieved from your organization currency settings.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"date\": {\n \"description\": \"Date when the sales order was created in YYYY-MM-DD format. This date affects order processing timelines, delivery schedules, payment terms calculation, and appears on customer-facing documents and internal reports.\",\n \"type\": \"string\",\n \"example\": \"2014-07-28\"\n },\n \"shipment_date\": {\n \"description\": \"Expected or actual date when goods will be shipped to the customer in YYYY-MM-DD format. Used for delivery planning, customer communication, inventory management, and tracking order fulfillment timelines.\",\n \"type\": \"string\"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for a sales order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000639129\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"salesperson_id\": {\n \"description\": \"Unique identifier for the salesperson responsible for this sales order. Links the order to a specific sales representative customer relationship management, and sales reporting purposes.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"merchant_id\": {\n \"description\": \"ID of the merchant\",\n \"type\": \"string\",\n \"example\": \"460000000000597\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of a sales order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_order\": {\n \"type\": \"integer\",\n \"example\": 0\n },\n \"item_id\": {\n \"description\": \"ID of the item.\",\n \"type\": \"string\",\n \"example\": \"460000000017088\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"name\": {\n \"description\": \"Name of the line item.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Description of the line item.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"quantity\": {\n \"description\": \"Quantity of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 40\n },\n \"product_type\": {\n \"description\": \"Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"za\",\n \"ke\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"E48\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"discount\": {\n \"description\": \"Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \\\"12.5%\\\") or amount (e.g., \\\"190\\\").\",\n \"type\": \"string\"\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied\",\n \"type\": \"string\",\n \"example\": \"460000000017094\"\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax or TDS tax group applied\",\n \"type\": \"string\",\n \"example\": \"460000000017098\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tags\": {\n \"description\": \"Filter all your reports based on the tag\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 462000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 462000000002670\n }\n }\n }\n },\n \"unit\": {\n \"description\": \"Unit of the line item e.g. kgs, Nos.\",\n \"type\": \"string\",\n \"example\": \"Nos\"\n },\n \"item_custom_fields\": {\n \"description\": \"Custom fields for a sales order items.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000639129\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of Tax Exemption that is applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Free-form text field containing additional information, instructions, or comments related to the sales order. This field supports internal documentation, customer-specific requirements, special handling instructions, and inter-departmental communication for order processing workflows.\",\n \"type\": \"string\"\n },\n \"terms\": {\n \"description\": \"Contractual terms and conditions governing the sales order transaction. Defines payment obligations, delivery specifications, warranty provisions, liability limitations, and other legal stipulations that establish the binding agreement between the organization and customer for this specific transaction.\",\n \"type\": \"string\"\n },\n \"billing_address_id\": {\n \"description\": \"Unique identifier referencing the customer billing address entity. Determines the address used for invoice generation, payment processing, tax jurisdiction calculations, and financial record-keeping. Must correspond to a valid address record associated with the specified customer account.\",\n \"type\": \"string\",\n \"example\": 460000000032174\n },\n \"shipping_address_id\": {\n \"description\": \"Unique identifier referencing the customer shipping address entity. Specifies the delivery destination for goods fulfillment, logistics planning, shipping cost calculations, and delivery confirmation processes. Must correspond to a valid address record within the customer address registry.\",\n \"type\": \"string\"\n },\n \"crm_owner_id\": {\n \"type\": \"string\"\n },\n \"crm_custom_reference_id\": {\n \"type\": \"string\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the sales order. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the sales order.Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"salesorder_number\": {\n \"description\": \"Unique alphanumeric identifier for the sales order entity. Required when automatic numbering is disabled in organization settings. Must be unique within the organization and follows the configured numbering sequence pattern for sales order identification and tracking.\",\n \"type\": \"string\",\n \"example\": \"SO-00001\"\n },\n \"reference_number\": {\n \"description\": \"External reference identifier for cross-referencing with customer purchase orders, internal tracking systems, or third-party applications. Used for order reconciliation, customer communication, and integration with external business systems and workflows.\",\n \"type\": \"string\",\n \"example\": \"REF-001\"\n },\n \"is_update_customer\": {\n \"description\": \"Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"discount\": {\n \"description\": \"Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \\\"12.5%\\\") or amount (e.g., \\\"190\\\").\",\n \"type\": \"string\"\n },\n \"exchange_rate\": {\n \"description\": \"Currency conversion rate from the transaction currency to the organization base currency. Required for multi-currency transactions to ensure accurate financial reporting, profit calculations, and tax computations in the base currency denomination.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1.233\n },\n \"salesperson_name\": {\n \"description\": \"Full name of the sales representative assigned to this sales order. Automatically populated when salesperson_id is specified.\",\n \"type\": \"string\",\n \"example\": \"John Roberts\"\n },\n \"notes_default\": {\n \"description\": \"Default Notes for the Sales Order\",\n \"type\": \"string\"\n },\n \"terms_default\": {\n \"description\": \"Default Terms of the Sales Order\",\n \"type\": \"string\"\n },\n \"tax_id\": {\n \"description\": \"Tax ID for the Sales Order.\",\n \"type\": \"string\",\n \"example\": \"460000000017094\"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Tax Authority's name.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of Tax Exemption that is applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"shipping_charge\": {\n \"description\": \"Additional cost associated with product delivery and logistics services. Applied to the sales order total and affects final pricing calculations, profit margins, and customer billing. Supports decimal precision for accurate cost allocation.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2\n },\n \"adjustment\": {\n \"description\": \"Manual modification amount applied to the sales order total for rounding corrections, special pricing arrangements, or other business-specific adjustments. Supports positive and negative values for additions or deductions from the order total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0.2\n },\n \"delivery_method\": {\n \"description\": \"Specification of the transportation and delivery mechanism for order fulfillment. Determines shipping costs, delivery timelines, carrier selection, and customer communication regarding order status and tracking information.\",\n \"type\": \"string\",\n \"example\": \"Air\"\n },\n \"estimate_id\": {\n \"description\": \"ID of the estimate associated with the Sales Order\",\n \"type\": \"string\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"Boolean flag determining the sequence of discount application in tax calculations. When true, discount is applied before tax computation; when false, discount is applied after tax calculation. Affects final pricing accuracy and tax compliance reporting.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"Classification of discount application scope within the sales order. entity_level applies discount to the entire order total, while item_level applies discount to individual line items. Determines discount calculation methodology and affects pricing structure.\",\n \"type\": \"string\",\n \"example\": \"entity_level\"\n },\n \"adjustment_description\": {\n \"description\": \"Textual explanation for the adjustment amount applied to the sales order. Provides audit trail documentation, justification for pricing modifications, and contextual information for financial reporting and compliance verification purposes.\",\n \"type\": \"string\",\n \"example\": \"Adjustment\"\n },\n \"pricebook_id\": {\n \"description\": \"Unique identifier for the pricing structure applied to the sales order. Determines item rates, discount rules, and pricing policies based on customer segments, volume tiers, or promotional campaigns. Can be retrieved from the Pricebooks API.\",\n \"type\": \"string\"\n },\n \"template_id\": {\n \"description\": \"Unique identifier for the PDF document template used for sales order presentation. Determines document layout, branding elements, formatting specifications, and visual presentation standards for customer-facing documents and printed materials.\",\n \"type\": \"string\",\n \"example\": \"460000000021001\"\n },\n \"documents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"document_id\",\n \"file_name\"\n ]\n },\n \"zcrm_potential_id\": {\n \"description\": \"Unique identifier linking the sales order to a Zoho CRM potential record.\",\n \"type\": \"string\",\n \"example\": \"460000000033001\"\n },\n \"zcrm_potential_name\": {\n \"description\": \"Descriptive name of the Zoho CRM potential record associated with this sales order.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateSalesReceipt.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateSalesReceipt.json new file mode 100644 index 00000000..47ef823a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateSalesReceipt.json @@ -0,0 +1,400 @@ +{ + "name": "CreateSalesReceipt", + "fully_qualified_name": "ZohoBooksApi.CreateSalesReceipt@0.1.0", + "description": "Create a sales receipt for immediate payment transactions.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization needed to create the sales receipt.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_receipt_details", + "required": false, + "description": "JSON object containing details for the sales receipt, including customer ID, receipt number, date, payment mode, line items, notes, and terms.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer" + }, + "receipt_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sales receipt number (required if auto-numbering is disabled)" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the sales receipt" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment was received. Allowed values: cash, check, credit_card, bank_transfer, etc." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the item" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be applied" + } + }, + "description": "Line items for the sales receipt" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the sales receipt" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to ignore automatic sales receipt number generation, requiring manual entry of the receipt number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto sales receipt number generation for this sales receipt. This mandates the sales receipt number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + }, + { + "name": "send_receipt_via_email", + "required": false, + "description": "Set to true to send the sales receipt to the customer via email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the sales receipt to customer via email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "can_send_in_mail" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_sales_receipt'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesreceipts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto sales receipt number generation for this sales receipt. This mandates the sales receipt number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto sales receipt number generation for this sales receipt. This mandates the sales receipt number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "can_send_in_mail", + "tool_parameter_name": "send_receipt_via_email", + "description": "Send the sales receipt to customer via email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the sales receipt to customer via email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "sales_receipt_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer" + }, + "receipt_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sales receipt number (required if auto-numbering is disabled)" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the sales receipt" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment was received. Allowed values: cash, check, credit_card, bank_transfer, etc." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the item" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be applied" + } + }, + "description": "Line items for the sales receipt" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the sales receipt" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"payment_mode\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier for the customer\",\n \"type\": \"string\",\n \"example\": \"460000000017138\"\n },\n \"receipt_number\": {\n \"description\": \"Sales receipt number (required if auto-numbering is disabled)\",\n \"type\": \"string\",\n \"example\": \"SR-00001\"\n },\n \"date\": {\n \"description\": \"Date of the sales receipt\",\n \"type\": \"string\",\n \"example\": \"2014-07-28\"\n },\n \"payment_mode\": {\n \"description\": \"Mode through which payment was received. Allowed values: cash, check, credit_card, bank_transfer, etc.\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"line_items\": {\n \"description\": \"Line items for the sales receipt\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"ID of the item\",\n \"type\": \"string\",\n \"example\": \"460000000017088\"\n },\n \"rate\": {\n \"description\": \"Rate of the item\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"quantity\": {\n \"description\": \"Quantity of the item\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2\n },\n \"tax_id\": {\n \"description\": \"ID of the tax to be applied\",\n \"type\": \"string\",\n \"example\": \"460000000017094\"\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Notes for the sales receipt\",\n \"type\": \"string\",\n \"example\": \"Thank you for your business\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions\",\n \"type\": \"string\",\n \"example\": \"Payment received in full\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateTaxAuthority.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateTaxAuthority.json new file mode 100644 index 00000000..2cfbad7a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateTaxAuthority.json @@ -0,0 +1,220 @@ +{ + "name": "CreateTaxAuthority", + "fully_qualified_name": "ZohoBooksApi.CreateTaxAuthority@0.1.0", + "description": "Create a tax authority in Zoho Books.\n\nUse this tool to create a new tax authority in Zoho Books. Suitable for financial administrators managing tax compliance.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the tax authority is to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_authority_details", + "required": false, + "description": "JSON object containing details like tax authority name, description, registration number, and label.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description." + }, + "registration_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Registration Number of the Tax Authority" + }, + "registration_number_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_tax_authority'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxauthorities", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "tax_authority_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description." + }, + "registration_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Registration Number of the Tax Authority" + }, + "registration_number_label": { + "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 \"required\": [\n \"tax_authority_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"tax_authority_name\": {\n \"description\": \"Name of the Tax Authority\",\n \"type\": \"string\",\n \"example\": \"Illinois Department of Revenue\"\n },\n \"description\": {\n \"description\": \"Description.\",\n \"type\": \"string\",\n \"example\": \"The New York State Department of Taxation and Finance\"\n },\n \"registration_number\": {\n \"description\": \"Registration Number of the Tax Authority\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"registration_number_label\": {\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateTaxExemption.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateTaxExemption.json new file mode 100644 index 00000000..bc917c89 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateTaxExemption.json @@ -0,0 +1,204 @@ +{ + "name": "CreateTaxExemption", + "fully_qualified_name": "ZohoBooksApi.CreateTaxExemption@0.1.0", + "description": "Create a tax exemption in Zoho Books.\n\nUse this tool to create a tax exemption in Zoho Books when you need to apply tax exemptions for transactions or customers.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books for which the tax exemption is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_exemption_details", + "required": false, + "description": "JSON object containing 'tax_exemption_code', 'description', and 'type'. 'Type' can be 'customer' or 'item'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the tax exemption, can be customer or item." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_tax_exemption'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxexemptions", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "tax_exemption_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the tax exemption, can be customer or item." + } + }, + "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 \"required\": [\n \"tax_exemption_code\",\n \"type\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"example\": \"RESELLER\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"description\": {\n \"description\": \"Description\",\n \"type\": \"string\",\n \"example\": \"Tax exempted because the contact is a reseller.\"\n },\n \"type\": {\n \"description\": \"Type of the tax exemption, can be customer or item.\",\n \"type\": \"string\",\n \"example\": \"customer\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateTaxGroup.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateTaxGroup.json new file mode 100644 index 00000000..9196034d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateTaxGroup.json @@ -0,0 +1,188 @@ +{ + "name": "CreateTaxGroup", + "fully_qualified_name": "ZohoBooksApi.CreateTaxGroup@0.1.0", + "description": "Create a tax group with multiple associated taxes.\n\nThis tool calls the Zoho Books API to create a tax group, allowing you to associate multiple taxes into a single group. Use this tool when you need to manage and apply tax groups for accounting purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization within Zoho Books. This is required to create a tax group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_group_details", + "required": false, + "description": "JSON object containing 'tax_group_name' (name of the tax group) and 'taxes' (comma-separated list of tax IDs).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_group_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the tax group to be created." + }, + "taxes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma Seperated list of tax IDs that are to be associated to the tax group." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_tax_group'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxgroups", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "tax_group_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_group_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the tax group to be created." + }, + "taxes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma Seperated list of tax IDs that are to be associated to the tax group." + } + }, + "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 \"tax_group_name\": {\n \"description\": \"Name of the tax group to be created.\",\n \"type\": \"string\",\n \"example\": \"Sales Group\"\n },\n \"taxes\": {\n \"description\": \"Comma Seperated list of tax IDs that are to be associated to the tax group.\",\n \"type\": \"string\",\n \"example\": \"982000000566009\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorBill.json new file mode 100644 index 00000000..4223266c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorBill.json @@ -0,0 +1,1403 @@ +{ + "name": "CreateVendorBill", + "fully_qualified_name": "ZohoBooksApi.CreateVendorBill@0.1.0", + "description": "Create a bill received from your vendor.\n\nUse this tool to log and manage invoices received from vendors by creating a bill in your system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in which the bill will be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "attachment_file_path", + "required": false, + "description": "Path to the file to attach. Accepts GIF, PNG, JPEG, JPG, BMP, and PDF formats.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachment" + }, + { + "name": "bill_request_data", + "required": false, + "description": "JSON object with detailed bill information: vendor, currency, payment terms, line items, taxes, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to determine if customer information should be updated when creating the bill." + }, + "purchaseorder_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of purchase order identifiers linked to this bill for tracking purposes." + }, + "bill_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "permit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The permit number for the bill." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services." + }, + "is_item_level_tax_calc": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for bill adjustment. Examples: \"Early payment discount\", \"Volume discount\", \"Rounding adjustment\", \"Handling fee\". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "purchaseorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units for the line item. Used to calculate line item totals (quantity \u00d7 rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax or tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a bill." + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax in the Bill" + } + }, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management." + }, + "approvers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "approver_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Approver" + }, + "order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Approver" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachment", + "tool_parameter_name": "attachment_file_path", + "description": "File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bill_request_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to determine if customer information should be updated when creating the bill." + }, + "purchaseorder_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of purchase order identifiers linked to this bill for tracking purposes." + }, + "bill_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "permit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The permit number for the bill." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services." + }, + "is_item_level_tax_calc": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for bill adjustment. Examples: \"Early payment discount\", \"Volume discount\", \"Rounding adjustment\", \"Handling fee\". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "purchaseorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units for the line item. Used to calculate line item totals (quantity \u00d7 rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax or tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a bill." + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax in the Bill" + } + }, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management." + }, + "approvers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "approver_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Approver" + }, + "order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Approver" + } + }, + "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 \"required\": [\n \"vendor_id\",\n \"bill_number\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API.\",\n \"type\": \"string\",\n \"example\": \"460000000038029\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled.\",\n \"type\": \"string\",\n \"example\": \"460000000000099\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_update_customer\": {\n \"description\": \"Flag to determine if customer information should be updated when creating the bill.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"purchaseorder_ids\": {\n \"description\": \"Array of purchase order identifiers linked to this bill for tracking purposes.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n 460000000068231,\n 460000000068233\n ]\n },\n \"bill_number\": {\n \"description\": \"Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization.\",\n \"type\": \"string\",\n \"example\": \"00454\"\n },\n \"documents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"description\": \"ID of the Document\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"file_name\": {\n \"description\": \"Name of the file\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"source_of_supply\": {\n \"description\": \"State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"permit_number\": {\n \"description\": \"The permit number for the bill.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uae\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions.\",\n \"type\": \"string\",\n \"example\": 460000000038090\n },\n \"reference_number\": {\n \"description\": \"External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers.\",\n \"type\": \"string\",\n \"example\": \"4321133\"\n },\n \"date\": {\n \"description\": \"Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting.\",\n \"type\": \"string\",\n \"example\": \"2013-09-11\"\n },\n \"due_date\": {\n \"description\": \"Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning.\",\n \"type\": \"string\",\n \"example\": \"2013-09-26\"\n },\n \"payment_terms\": {\n \"description\": \"Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports.\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"payment_terms_label\": {\n \"description\": \"Label of the Payment Terms\",\n \"type\": \"string\",\n \"example\": \"Due on Receipt\"\n },\n \"recurring_bill_id\": {\n \"description\": \"Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule.\",\n \"type\": \"string\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1.23\n },\n \"is_item_level_tax_calc\": {\n \"description\": \"Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_inclusive_tax\": {\n \"description\": \"Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"adjustment\": {\n \"description\": \"Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Text description explaining the reason for bill adjustment. Examples: \\\"Early payment discount\\\", \\\"Volume discount\\\", \\\"Rounding adjustment\\\", \\\"Handling fee\\\". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"line_items\": {\n \"description\": \"Line items of a bill.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"purchaseorder_item_id\": {\n \"description\": \"Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills.\",\n \"type\": \"string\"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations.\",\n \"type\": \"string\",\n \"example\": \"460000000067009\"\n },\n \"item_id\": {\n \"description\": \"Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting.\",\n \"type\": \"string\",\n \"example\": \"460000000054135\"\n },\n \"name\": {\n \"description\": \"Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes.\",\n \"type\": \"string\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance.\",\n \"type\": \"string\",\n \"example\": \"460000000000403\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.\",\n \"type\": \"string\"\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Reverse charge tax ID\",\n \"type\": \"string\",\n \"example\": 460000000038056,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"quantity\": {\n \"description\": \"Number of units for the line item. Used to calculate line item totals (quantity \\u00d7 rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.\",\n \"type\": \"string\",\n \"example\": \"460000000027005\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tds_tax_id\": {\n \"description\": \"TDS ID of the tax or tax group applied to the line item\",\n \"type\": \"string\",\n \"example\": \"460000000027009\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_order\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"eu\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization.\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054178\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054180\"\n }\n }\n }\n },\n \"is_billable\": {\n \"description\": \"Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"project_id\": {\n \"description\": \"ID of the Project\",\n \"type\": \"string\"\n },\n \"customer_id\": {\n \"description\": \"ID of the Customer\",\n \"type\": \"string\"\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"serial_numbers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"taxes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.\",\n \"type\": \"string\",\n \"example\": \"460000000027005\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tax_name\": {\n \"description\": \"Name of the Tax\",\n \"type\": \"string\",\n \"example\": \"VAT (12.5%)\"\n },\n \"tax_amount\": {\n \"description\": \"Amount of Tax in the Bill\",\n \"type\": \"string\",\n \"example\": 1.25\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions.\",\n \"type\": \"string\",\n \"example\": \"Thanks for your business.\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management.\",\n \"type\": \"string\",\n \"example\": \"Terms and conditions apply.\"\n },\n \"approvers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"approver_id\": {\n \"description\": \"ID of the Approver\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"order\": {\n \"description\": \"Order of the Approver\",\n \"type\": \"integer\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorCredit.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorCredit.json new file mode 100644 index 00000000..6d71028d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorCredit.json @@ -0,0 +1,1064 @@ +{ + "name": "CreateVendorCredit", + "fully_qualified_name": "ZohoBooksApi.CreateVendorCredit@0.1.0", + "description": "Create vendor credit for returns or adjustments.\n\nUse this tool to record new vendor credits for returned items, overpayments, or adjustments. Supports multi-currency, custom line items, taxes, and workflows.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the vendor credit is being created. Must be a valid organization ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_id", + "required": false, + "description": "Identifier of the bill associated with the vendor credit. Required for linking the credit to a specific transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bill Associated with the Vendor Credit" + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "vendor_credit_details", + "required": false, + "description": "Structured data for the vendor credit, including vendor ID, currency, VAT and GST treatments, date, line items, custom fields, and more. Expected as a JSON object.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor contact. Retrieve vendor IDs from the Get Contacts API endpoint in the contacts section. This ID links the vendor credit to the specific vendor record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the vendor credit. Can differ from vendor currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the vendor credits. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registeredand if he resides outside the EU then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vendor_credit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory if auto number generation is disabled." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the vendor credit. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricebook used for pricing items in the vendor credit. Retrieve pricebook IDs from the pricebooks API endpoint." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to update customer information when creating the vendor credit. This will modify the associated customer record with new details from the vendor credit." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the vendor credit is created. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true if line item rates include tax amounts. When true, tax is already included in the item rates. When false, tax will be calculated and added to the rates." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the line item within the vendor credit. System-generated ID used for identifying and referencing specific line items in the vendor credit." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the vendor credit document." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for the line item. Determines the display order of line items on the vendor credit document. Lower numbers appear first." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples: kgs, Nos, hours, pieces. Used to specify how the quantity is measured." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. The amount per unit before taxes and discounts. Used with quantity to calculate the line total." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS Tax ID of the Tax associated with the Vendor Credit" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag option" + } + }, + "description": "Array of tags associated with the line item. Each tag contains tag_id and tag_option_id for categorization and tracking purposes." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of a vendor credit." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the vendor credit. Displayed on the vendor credit document for vendor reference. Max-length [5000]" + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to bypass auto number generation. A vendor credit number becomes mandatory when enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto number generation for this vendor credit only. On enabling this option vendor credit number is mandatory." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_vendor_credit'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto number generation for this vendor credit only. On enabling this option vendor credit number is mandatory.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto number generation for this vendor credit only. On enabling this option vendor credit number is mandatory." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_id", + "description": "Bill Associated with the Vendor Credit", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bill Associated with the Vendor Credit" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "vendor_credit_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor contact. Retrieve vendor IDs from the Get Contacts API endpoint in the contacts section. This ID links the vendor credit to the specific vendor record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the vendor credit. Can differ from vendor currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the vendor credits. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registeredand if he resides outside the EU then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vendor_credit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory if auto number generation is disabled." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the vendor credit. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricebook used for pricing items in the vendor credit. Retrieve pricebook IDs from the pricebooks API endpoint." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to update customer information when creating the vendor credit. This will modify the associated customer record with new details from the vendor credit." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the vendor credit is created. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true if line item rates include tax amounts. When true, tax is already included in the item rates. When false, tax will be calculated and added to the rates." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the line item within the vendor credit. System-generated ID used for identifying and referencing specific line items in the vendor credit." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the vendor credit document." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for the line item. Determines the display order of line items on the vendor credit document. Lower numbers appear first." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples: kgs, Nos, hours, pieces. Used to specify how the quantity is measured." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. The amount per unit before taxes and discounts. Used with quantity to calculate the line total." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS Tax ID of the Tax associated with the Vendor Credit" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag option" + } + }, + "description": "Array of tags associated with the line item. Each tag contains tag_id and tag_option_id for categorization and tracking purposes." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of a vendor credit." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the vendor credit. Displayed on the vendor credit document for vendor reference. Max-length [5000]" + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + } + }, + "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 \"required\": [\n \"vendor_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"Unique identifier for the vendor contact. Retrieve vendor IDs from the Get Contacts API endpoint in the contacts section. This ID links the vendor credit to the specific vendor record.\",\n \"type\": \"string\",\n \"example\": \"460000000020029\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the vendor credit. Can differ from vendor currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section.\",\n \"type\": \"string\",\n \"example\": \"3000000000083\"\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment for the vendor credits. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registeredand if he resides outside the EU then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vendor_credit_number\": {\n \"description\": \"Mandatory if auto number generation is disabled.\",\n \"type\": \"string\",\n \"example\": \"DN-00002\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the vendor credit. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Unique identifier for the pricebook used for pricing items in the vendor credit. Retrieve pricebook IDs from the pricebooks API endpoint.\",\n \"type\": \"string\"\n },\n \"reference_number\": {\n \"description\": \"Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]\",\n \"type\": \"string\"\n },\n \"is_update_customer\": {\n \"description\": \"Set to true to update customer information when creating the vendor credit. This will modify the associated customer record with new details from the vendor credit.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date\": {\n \"description\": \"The date on which the vendor credit is created. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations.\",\n \"type\": \"string\",\n \"example\": \"2014-08-28\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"is_inclusive_tax\": {\n \"description\": \"Set to true if line item rates include tax amounts. When true, tax is already included in the item rates. When false, tax will be calculated and added to the rates.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of a vendor credit.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service.\",\n \"type\": \"string\",\n \"example\": \"460000000020071\"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier for the line item within the vendor credit. System-generated ID used for identifying and referencing specific line items in the vendor credit.\",\n \"type\": \"string\",\n \"example\": \"460000000020077\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes.\",\n \"type\": \"string\",\n \"example\": \"460000000020097\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item. Describes the product or service being credited. This name is displayed on the vendor credit document.\",\n \"type\": \"string\",\n \"example\": \"Premium Plan - Web hosting\"\n },\n \"hsn_or_sac\": {\n \"description\": \"HSN Code\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"ID of the reverse charge tax\",\n \"type\": \"string\",\n \"example\": 460000000057089,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document.\",\n \"type\": \"string\"\n },\n \"item_order\": {\n \"description\": \"Sequential order number for the line item. Determines the display order of line items on the vendor credit document. Lower numbers appear first.\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"quantity\": {\n \"description\": \"Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the line item quantity. Examples: kgs, Nos, hours, pieces. Used to specify how the quantity is measured.\",\n \"type\": \"string\",\n \"example\": \"Nos\"\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the line item. The amount per unit before taxes and discounts. Used with quantity to calculate the line total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 30\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this line item.\",\n \"type\": \"string\"\n },\n \"tds_tax_id\": {\n \"description\": \"TDS Tax ID of the Tax associated with the Vendor Credit\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tags\": {\n \"description\": \"Array of tags associated with the line item. Each tag contains tag_id and tag_option_id for categorization and tracking purposes.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"ID of the tag option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\"\n }\n }\n }\n },\n \"serial_numbers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Additional notes or comments for the vendor credit. Displayed on the vendor credit document for vendor reference. Max-length [5000]\",\n \"type\": \"string\"\n },\n \"documents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"description\": \"ID of the Document\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"file_name\": {\n \"description\": \"Name of the file\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorPayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorPayment.json new file mode 100644 index 00000000..d3fc3ee6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorPayment.json @@ -0,0 +1,464 @@ +{ + "name": "CreateVendorPayment", + "fully_qualified_name": "ZohoBooksApi.CreateVendorPayment@0.1.0", + "description": "Create and apply a payment to a vendor's bill.\n\nThis tool is used to record a payment made to a vendor, with the option to apply the payment either partially or fully to the vendor's outstanding bills.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization to which the vendor payment belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_details", + "required": false, + "description": "JSON object containing details about the vendor payment, including vendor ID, bills to apply the payment to, total amount, payment date, and other relevant payment information.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor associated with the Vendor Payment." + }, + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill Payment" + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the bill the payment is to be applied." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Amount Withheld during Bill Payment" + } + }, + "description": "Individual bill payment details as array." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date the payment is made." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/ bank account from which the payment is made." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the Vendor Payment recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the Vendor Payment recorded." + }, + "check_details": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_paid_via_print_check": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Bill Payment is paid Via Print Check Option" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value for the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_vendor_payment'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "payment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor associated with the Vendor Payment." + }, + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill Payment" + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the bill the payment is to be applied." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Amount Withheld during Bill Payment" + } + }, + "description": "Individual bill payment details as array." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date the payment is made." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/ bank account from which the payment is made." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the Vendor Payment recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the Vendor Payment recorded." + }, + "check_details": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_paid_via_print_check": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Bill Payment is paid Via Print Check Option" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value for the Custom Field" + } + }, + "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 \"required\": [\n \"amount\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"ID of the vendor associated with the Vendor Payment.\",\n \"type\": \"string\",\n \"example\": \"460000000026049\"\n },\n \"bills\": {\n \"description\": \"Individual bill payment details as array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"bill_payment_id\": {\n \"description\": \"ID of the Bill Payment\",\n \"type\": \"string\",\n \"example\": \"460000000053221\"\n },\n \"bill_id\": {\n \"description\": \"ID of the bill the payment is to be applied.\",\n \"type\": \"string\",\n \"example\": \"460000000053199\"\n },\n \"amount_applied\": {\n \"description\": \"Amount applied to the bill.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 150\n },\n \"tax_amount_withheld\": {\n \"description\": \"Tax Amount Withheld during Bill Payment\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"x-node_available_in\": [\n \"global\",\n \"in\",\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n },\n \"date\": {\n \"description\": \"Date the payment is made.\",\n \"type\": \"string\",\n \"example\": \"2013-10-07\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate of the currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"amount\": {\n \"description\": \"Total Amount of Vendor Payment\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 500\n },\n \"paid_through_account_id\": {\n \"description\": \"ID of the cash/ bank account from which the payment is made.\",\n \"type\": \"string\",\n \"example\": \"460000000000358\"\n },\n \"payment_mode\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"Stripe\"\n },\n \"description\": {\n \"description\": \"Description for the Vendor Payment recorded.\",\n \"type\": \"string\"\n },\n \"reference_number\": {\n \"description\": \"Reference number for the Vendor Payment recorded.\",\n \"type\": \"string\",\n \"example\": \"REF#912300\"\n },\n \"check_details\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"x-node_available_in\": [\n \"us\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_paid_via_print_check\": {\n \"description\": \"Check if the Bill Payment is paid Via Print Check Option\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value for the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorPurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorPurchaseOrder.json new file mode 100644 index 00000000..4b936612 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateVendorPurchaseOrder.json @@ -0,0 +1,1388 @@ +{ + "name": "CreateVendorPurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.CreateVendorPurchaseOrder@0.1.0", + "description": "Generate a purchase order for a vendor.\n\nUse this tool to create a purchase order for a vendor in Zoho Books. It facilitates procurement by initiating an order with specified vendor details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books for which the purchase order is being created. Required to specify the target organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "file_attachment", + "required": false, + "description": "File path or URL to attach. Allowed extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachment" + }, + { + "name": "purchase_order_details", + "required": false, + "description": "A JSON object containing detailed specifications for creating a purchase order, including vendor ID, currency, contact persons, items, and any additional relevant information.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor for whom the purchase order is being created. This value is mandatory to associate the purchase order with a specific vendor in your organization. You can obtain the vendor ID by listing all vendors using the contacts API. Ensure the vendor exists before referencing their ID here." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency for the purchase order. This value is mandatory to specify the currency in which the purchase order amounts will be displayed and processed. You can obtain the currency ID by listing all available currencies using the GET /settings/currencies API. Ensure the currency exists and is properly configured in your organization before referencing its ID here." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "purchaseorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the purchase order. This field is mandatory when auto number generation is disabled for your organization. If auto numbering is enabled, this field can be left empty as the system will automatically generate a sequential purchase order number. When manually specifying a number, ensure it follows your organization's numbering convention and is unique across all purchase orders." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the purchase order. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the pricebook to be used for this purchase order. The pricebook contains predefined pricing information for items and services. This field is optional and if not specified, the default pricebook will be used. You can obtain the pricebook ID by listing all available pricebooks in your organization. Ensure the pricebook exists and contains the relevant pricing information before referencing its ID here." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the purchase order. This field is optional and can be used to store additional reference information such as vendor order numbers, internal tracking codes, or any other external system identifiers. This reference number will be displayed on the purchase order document and can be used for cross-referencing with external systems or internal tracking purposes." + }, + "billing_address_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billing address to be used for this purchase order. The billing address determines where invoices and related documents will be sent. This field is optional and if not specified, the default billing address from your organization settings will be used. You can obtain the billing address ID by listing all available addresses in your organization. Ensure the address exists and contains the correct billing information before referencing its ID here." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the CRM owner assigned to this purchase order. This field links the purchase order to a specific CRM user who is responsible for managing the vendor relationship and overseeing the procurement process. The CRM owner can track, follow up, and manage all aspects of this purchase order within the CRM system." + }, + "crm_custom_reference_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of CRM Custom Reference" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the purchase order. Obtain this value from the `template_id` field in the response of the GET `/purchaseorders/templates` API for your organization. Determines which template is used for the purchase order PDF document, controlling the layout, formatting, and visual appearance of the generated purchase order." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date when the purchase order was created or issued. This is the official date that appears on the purchase order document and is used for record-keeping, reporting, and tracking purposes. The date should be in YYYY-MM-DD format and typically represents when the purchase order was authorized and sent to the vendor." + }, + "delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format and is typically communicated to the vendor as part of the purchase order terms." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency exchange rate used to convert the purchase order amounts from the vendor's currency to your organization's base currency. This rate is applied when the purchase order is created in a foreign currency. A value of 1 indicates the same currency as your base currency. This rate affects all monetary calculations and reporting for this purchase order." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The discount amount or percentage to be applied to the purchase order total. This can be specified as a fixed amount or percentage value. Discounts are typically offered by vendors for bulk purchases, early payments, or promotional purposes. The discount reduces the total amount payable and affects the final purchase order total." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account where the discount amount will be recorded. This account is used to track and categorize discount expenses in your general ledger. The discount account should be configured as an expense or contra-revenue account to properly reflect the impact of discounts on your financial statements." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether the discount is applied before or after tax calculations. When set to true, the discount is applied to the subtotal before tax is calculated, resulting in tax being calculated on the discounted amount. When set to false, the discount is applied after tax calculations, which may affect the final total differently depending on your tax configuration." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that specifies whether the line item rates include or exclude tax amounts. When set to true, the specified rates are inclusive of tax, meaning the tax amount is already included in the rate. When set to false, the rates are exclusive of tax, and tax will be calculated and added separately. This setting affects how tax calculations are performed and displayed on the purchase order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information, instructions, or comments to be displayed on the purchase order document. This field is typically used for delivery instructions, special requirements, vendor communications, or any other information relevant to the purchase order. The notes appear on the purchase order PDF and are visible to the vendor." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default notes for purchase order" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the purchase order document. This field is used to specify payment terms, delivery conditions, return policies, warranty information, or any other legal or business terms that apply to this transaction. The terms appear on the purchase order PDF and form part of the contractual agreement with the vendor." + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default terms for Purchase Orders" + }, + "ship_via": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipment Preference" + }, + "delivery_org_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization address where the goods or services from this purchase order should be delivered. This field specifies the delivery location within your organization, such as a warehouse, office, or branch location. The address details are retrieved from your organization's address book and displayed on the purchase order for vendor reference." + }, + "delivery_customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer for whom the goods or services in this purchase order are being procured. This field is used when the purchase order is created on behalf of a customer, such as in drop-shipping scenarios or when procuring items for specific customer projects. The customer information may be displayed on the purchase order for vendor reference." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the purchase order. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if customer should be updated" + }, + "salesorder_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order that is linked to this purchase order. This field establishes a connection between the sales order and purchase order, typically used in drop-shipping scenarios where you need to procure items to fulfill a customer's sales order. The linked sales order information may be displayed on the purchase order for vendor reference and internal tracking purposes." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item or service in the line item. Mandatory field that links to the item catalog. Determines item details, pricing, and inventory tracking. Obtain from GET /items API." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account for the line item. Mandatory for non-inventory items/services. Determines expense categorization in general ledger." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the line item on the purchase order. Auto-populated from item catalog when item_id is specified. Can be customized. Used for vendor reference and documentation." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional details, specifications, or notes about the line item. Can include technical specs, requirements, delivery instructions. Appears on purchase order document for vendor reference." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the quantity (e.g., Nos, kgs, hours, meters). Should match vendor pricing structure. Used for quantity calculations and pricing." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC Code for the Item" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the reverse charge tax for the line item. Used when buyer is responsible for paying tax instead of vendor. Applicable for unregistered vendors or specific tax regulations. Must reference valid reverse charge tax configuration." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price per item/service. Used to calculate total line item amount. Must be in purchase order currency. Tax inclusion depends on is_inclusive_tax setting. Affects pricing calculations and vendor billing." + }, + "quantity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being ordered. Used with rate to calculate total line item amount. Must match unit of measurement. Represents actual order quantity for delivery." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order of line item within purchase order. Determines display order on documents and reports. Typically numbered sequentially from 0 or 1. Maintains consistency across related documents." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax for the line item. Determines tax rate, name, and treatment for calculations. Used in tax amount computation and display on purchase order. Obtain from taxes API." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the VAT Acquistion" + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Reverse Charge" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of purchase order." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for purchase order." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system." + } + }, + "description": "Array of documents attached to the purchase order." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to disable automatic purchase order number generation, requiring a manual number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto purchase order number generation for this purchase order. This mandates the purchase order number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_purchase_order'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachment", + "tool_parameter_name": "file_attachment", + "description": "Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto purchase order number generation for this purchase order. This mandates the purchase order number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto purchase order number generation for this purchase order. This mandates the purchase order number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "purchase_order_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor for whom the purchase order is being created. This value is mandatory to associate the purchase order with a specific vendor in your organization. You can obtain the vendor ID by listing all vendors using the contacts API. Ensure the vendor exists before referencing their ID here." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency for the purchase order. This value is mandatory to specify the currency in which the purchase order amounts will be displayed and processed. You can obtain the currency ID by listing all available currencies using the GET /settings/currencies API. Ensure the currency exists and is properly configured in your organization before referencing its ID here." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "purchaseorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the purchase order. This field is mandatory when auto number generation is disabled for your organization. If auto numbering is enabled, this field can be left empty as the system will automatically generate a sequential purchase order number. When manually specifying a number, ensure it follows your organization's numbering convention and is unique across all purchase orders." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the purchase order. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the pricebook to be used for this purchase order. The pricebook contains predefined pricing information for items and services. This field is optional and if not specified, the default pricebook will be used. You can obtain the pricebook ID by listing all available pricebooks in your organization. Ensure the pricebook exists and contains the relevant pricing information before referencing its ID here." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the purchase order. This field is optional and can be used to store additional reference information such as vendor order numbers, internal tracking codes, or any other external system identifiers. This reference number will be displayed on the purchase order document and can be used for cross-referencing with external systems or internal tracking purposes." + }, + "billing_address_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billing address to be used for this purchase order. The billing address determines where invoices and related documents will be sent. This field is optional and if not specified, the default billing address from your organization settings will be used. You can obtain the billing address ID by listing all available addresses in your organization. Ensure the address exists and contains the correct billing information before referencing its ID here." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the CRM owner assigned to this purchase order. This field links the purchase order to a specific CRM user who is responsible for managing the vendor relationship and overseeing the procurement process. The CRM owner can track, follow up, and manage all aspects of this purchase order within the CRM system." + }, + "crm_custom_reference_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of CRM Custom Reference" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the purchase order. Obtain this value from the `template_id` field in the response of the GET `/purchaseorders/templates` API for your organization. Determines which template is used for the purchase order PDF document, controlling the layout, formatting, and visual appearance of the generated purchase order." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date when the purchase order was created or issued. This is the official date that appears on the purchase order document and is used for record-keeping, reporting, and tracking purposes. The date should be in YYYY-MM-DD format and typically represents when the purchase order was authorized and sent to the vendor." + }, + "delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format and is typically communicated to the vendor as part of the purchase order terms." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency exchange rate used to convert the purchase order amounts from the vendor's currency to your organization's base currency. This rate is applied when the purchase order is created in a foreign currency. A value of 1 indicates the same currency as your base currency. This rate affects all monetary calculations and reporting for this purchase order." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The discount amount or percentage to be applied to the purchase order total. This can be specified as a fixed amount or percentage value. Discounts are typically offered by vendors for bulk purchases, early payments, or promotional purposes. The discount reduces the total amount payable and affects the final purchase order total." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account where the discount amount will be recorded. This account is used to track and categorize discount expenses in your general ledger. The discount account should be configured as an expense or contra-revenue account to properly reflect the impact of discounts on your financial statements." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether the discount is applied before or after tax calculations. When set to true, the discount is applied to the subtotal before tax is calculated, resulting in tax being calculated on the discounted amount. When set to false, the discount is applied after tax calculations, which may affect the final total differently depending on your tax configuration." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that specifies whether the line item rates include or exclude tax amounts. When set to true, the specified rates are inclusive of tax, meaning the tax amount is already included in the rate. When set to false, the rates are exclusive of tax, and tax will be calculated and added separately. This setting affects how tax calculations are performed and displayed on the purchase order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information, instructions, or comments to be displayed on the purchase order document. This field is typically used for delivery instructions, special requirements, vendor communications, or any other information relevant to the purchase order. The notes appear on the purchase order PDF and are visible to the vendor." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default notes for purchase order" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the purchase order document. This field is used to specify payment terms, delivery conditions, return policies, warranty information, or any other legal or business terms that apply to this transaction. The terms appear on the purchase order PDF and form part of the contractual agreement with the vendor." + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default terms for Purchase Orders" + }, + "ship_via": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipment Preference" + }, + "delivery_org_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization address where the goods or services from this purchase order should be delivered. This field specifies the delivery location within your organization, such as a warehouse, office, or branch location. The address details are retrieved from your organization's address book and displayed on the purchase order for vendor reference." + }, + "delivery_customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer for whom the goods or services in this purchase order are being procured. This field is used when the purchase order is created on behalf of a customer, such as in drop-shipping scenarios or when procuring items for specific customer projects. The customer information may be displayed on the purchase order for vendor reference." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the purchase order. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if customer should be updated" + }, + "salesorder_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order that is linked to this purchase order. This field establishes a connection between the sales order and purchase order, typically used in drop-shipping scenarios where you need to procure items to fulfill a customer's sales order. The linked sales order information may be displayed on the purchase order for vendor reference and internal tracking purposes." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item or service in the line item. Mandatory field that links to the item catalog. Determines item details, pricing, and inventory tracking. Obtain from GET /items API." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account for the line item. Mandatory for non-inventory items/services. Determines expense categorization in general ledger." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the line item on the purchase order. Auto-populated from item catalog when item_id is specified. Can be customized. Used for vendor reference and documentation." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional details, specifications, or notes about the line item. Can include technical specs, requirements, delivery instructions. Appears on purchase order document for vendor reference." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the quantity (e.g., Nos, kgs, hours, meters). Should match vendor pricing structure. Used for quantity calculations and pricing." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC Code for the Item" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the reverse charge tax for the line item. Used when buyer is responsible for paying tax instead of vendor. Applicable for unregistered vendors or specific tax regulations. Must reference valid reverse charge tax configuration." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price per item/service. Used to calculate total line item amount. Must be in purchase order currency. Tax inclusion depends on is_inclusive_tax setting. Affects pricing calculations and vendor billing." + }, + "quantity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being ordered. Used with rate to calculate total line item amount. Must match unit of measurement. Represents actual order quantity for delivery." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order of line item within purchase order. Determines display order on documents and reports. Typically numbered sequentially from 0 or 1. Maintains consistency across related documents." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax for the line item. Determines tax rate, name, and treatment for calculations. Used in tax amount computation and display on purchase order. Obtain from taxes API." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the VAT Acquistion" + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Reverse Charge" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of purchase order." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for purchase order." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system." + } + }, + "description": "Array of documents attached to the purchase order." + } + }, + "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 \"required\": [\n \"vendor_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"Unique identifier of the vendor for whom the purchase order is being created. This value is mandatory to associate the purchase order with a specific vendor in your organization. You can obtain the vendor ID by listing all vendors using the contacts API. Ensure the vendor exists before referencing their ID here.\",\n \"type\": \"string\",\n \"example\": \"460000000026049\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier of the currency for the purchase order. This value is mandatory to specify the currency in which the purchase order amounts will be displayed and processed. You can obtain the currency ID by listing all available currencies using the GET /settings/currencies API. Ensure the currency exists and is properly configured in your organization before referencing its ID here.\",\n \"type\": \"string\",\n \"example\": \"460000000000099\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 460000000031001\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"purchaseorder_number\": {\n \"description\": \"Unique identifier for the purchase order. This field is mandatory when auto number generation is disabled for your organization. If auto numbering is enabled, this field can be left empty as the system will automatically generate a sequential purchase order number. When manually specifying a number, ensure it follows your organization's numbering convention and is unique across all purchase orders.\",\n \"type\": \"string\",\n \"example\": \"PO-00001\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the purchase order. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Unique identifier of the pricebook to be used for this purchase order. The pricebook contains predefined pricing information for items and services. This field is optional and if not specified, the default pricebook will be used. You can obtain the pricebook ID by listing all available pricebooks in your organization. Ensure the pricebook exists and contains the relevant pricing information before referencing its ID here.\",\n \"type\": \"string\",\n \"example\": 460000000026089\n },\n \"reference_number\": {\n \"description\": \"External reference number or identifier for the purchase order. This field is optional and can be used to store additional reference information such as vendor order numbers, internal tracking codes, or any other external system identifiers. This reference number will be displayed on the purchase order document and can be used for cross-referencing with external systems or internal tracking purposes.\",\n \"type\": \"string\",\n \"example\": \"ER/0034\"\n },\n \"billing_address_id\": {\n \"description\": \"Unique identifier of the billing address to be used for this purchase order. The billing address determines where invoices and related documents will be sent. This field is optional and if not specified, the default billing address from your organization settings will be used. You can obtain the billing address ID by listing all available addresses in your organization. Ensure the address exists and contains the correct billing information before referencing its ID here.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000017491\"\n },\n \"crm_owner_id\": {\n \"description\": \"Unique identifier of the CRM owner assigned to this purchase order. This field links the purchase order to a specific CRM user who is responsible for managing the vendor relationship and overseeing the procurement process. The CRM owner can track, follow up, and manage all aspects of this purchase order within the CRM system.\",\n \"type\": \"string\"\n },\n \"crm_custom_reference_id\": {\n \"description\": \"ID of CRM Custom Reference\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"template_id\": {\n \"description\": \"Unique identifier of the PDF template linked to the purchase order. Obtain this value from the `template_id` field in the response of the GET `/purchaseorders/templates` API for your organization. Determines which template is used for the purchase order PDF document, controlling the layout, formatting, and visual appearance of the generated purchase order.\",\n \"type\": \"string\",\n \"example\": \"460000000011003\"\n },\n \"date\": {\n \"description\": \"The date when the purchase order was created or issued. This is the official date that appears on the purchase order document and is used for record-keeping, reporting, and tracking purposes. The date should be in YYYY-MM-DD format and typically represents when the purchase order was authorized and sent to the vendor.\",\n \"type\": \"string\",\n \"example\": \"2014-02-10\"\n },\n \"delivery_date\": {\n \"description\": \"The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format and is typically communicated to the vendor as part of the purchase order terms.\",\n \"type\": \"string\",\n \"example\": \"2014-02-10\"\n },\n \"due_date\": {\n \"description\": \"The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format.\",\n \"type\": \"string\"\n },\n \"exchange_rate\": {\n \"description\": \"The currency exchange rate used to convert the purchase order amounts from the vendor's currency to your organization's base currency. This rate is applied when the purchase order is created in a foreign currency. A value of 1 indicates the same currency as your base currency. This rate affects all monetary calculations and reporting for this purchase order.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"discount\": {\n \"description\": \"The discount amount or percentage to be applied to the purchase order total. This can be specified as a fixed amount or percentage value. Discounts are typically offered by vendors for bulk purchases, early payments, or promotional purposes. The discount reduces the total amount payable and affects the final purchase order total.\",\n \"type\": \"string\",\n \"example\": \"10\"\n },\n \"discount_account_id\": {\n \"description\": \"Unique identifier of the accounting account where the discount amount will be recorded. This account is used to track and categorize discount expenses in your general ledger. The discount account should be configured as an expense or contra-revenue account to properly reflect the impact of discounts on your financial statements.\",\n \"type\": \"string\",\n \"example\": \"460000000011105\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"Boolean flag that determines whether the discount is applied before or after tax calculations. When set to true, the discount is applied to the subtotal before tax is calculated, resulting in tax being calculated on the discounted amount. When set to false, the discount is applied after tax calculations, which may affect the final total differently depending on your tax configuration.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_inclusive_tax\": {\n \"description\": \"Boolean flag that specifies whether the line item rates include or exclude tax amounts. When set to true, the specified rates are inclusive of tax, meaning the tax amount is already included in the rate. When set to false, the rates are exclusive of tax, and tax will be calculated and added separately. This setting affects how tax calculations are performed and displayed on the purchase order.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"notes\": {\n \"description\": \"Additional information, instructions, or comments to be displayed on the purchase order document. This field is typically used for delivery instructions, special requirements, vendor communications, or any other information relevant to the purchase order. The notes appear on the purchase order PDF and are visible to the vendor.\",\n \"type\": \"string\",\n \"example\": \"Please deliver as soon as possible.\"\n },\n \"notes_default\": {\n \"description\": \"Default notes for purchase order\",\n \"type\": \"string\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions text to be displayed on the purchase order document. This field is used to specify payment terms, delivery conditions, return policies, warranty information, or any other legal or business terms that apply to this transaction. The terms appear on the purchase order PDF and form part of the contractual agreement with the vendor.\",\n \"type\": \"string\",\n \"example\": \"Thanks for your business.\"\n },\n \"terms_default\": {\n \"description\": \"Default terms for Purchase Orders\",\n \"type\": \"string\"\n },\n \"ship_via\": {\n \"description\": \"Shipment Preference\",\n \"type\": \"string\"\n },\n \"delivery_org_address_id\": {\n \"description\": \"Unique identifier of the organization address where the goods or services from this purchase order should be delivered. This field specifies the delivery location within your organization, such as a warehouse, office, or branch location. The address details are retrieved from your organization's address book and displayed on the purchase order for vendor reference.\",\n \"type\": \"string\"\n },\n \"delivery_customer_id\": {\n \"description\": \"Unique identifier of the customer for whom the goods or services in this purchase order are being procured. This field is used when the purchase order is created on behalf of a customer, such as in drop-shipping scenarios or when procuring items for specific customer projects. The customer information may be displayed on the purchase order for vendor reference.\",\n \"type\": \"string\"\n },\n \"attention\": {\n \"description\": \"The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items.\",\n \"type\": \"string\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the purchase order. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_update_customer\": {\n \"description\": \"Check if customer should be updated\",\n \"type\": \"string\"\n },\n \"salesorder_id\": {\n \"description\": \"Unique identifier of the sales order that is linked to this purchase order. This field establishes a connection between the sales order and purchase order, typically used in drop-shipping scenarios where you need to procure items to fulfill a customer's sales order. The linked sales order information may be displayed on the purchase order for vendor reference and internal tracking purposes.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000124728314\"\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier of the item or service in the line item. Mandatory field that links to the item catalog. Determines item details, pricing, and inventory tracking. Obtain from GET /items API.\",\n \"type\": \"string\",\n \"example\": \"460000000027009\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier of the accounting account for the line item. Mandatory for non-inventory items/services. Determines expense categorization in general ledger.\",\n \"type\": \"string\",\n \"example\": \"460000000074003\"\n },\n \"name\": {\n \"description\": \"Display name of the line item on the purchase order. Auto-populated from item catalog when item_id is specified. Can be customized. Used for vendor reference and documentation.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Additional details, specifications, or notes about the line item. Can include technical specs, requirements, delivery instructions. Appears on purchase order document for vendor reference.\",\n \"type\": \"string\"\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the quantity (e.g., Nos, kgs, hours, meters). Should match vendor pricing structure. Used for quantity calculations and pricing.\",\n \"type\": \"string\",\n \"example\": \"Nos\"\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"hsn_or_sac\": {\n \"description\": \"HSN or SAC Code for the Item\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Unique identifier of the reverse charge tax for the line item. Used when buyer is responsible for paying tax instead of vendor. Applicable for unregistered vendors or specific tax regulations. Must reference valid reverse charge tax configuration.\",\n \"type\": \"string\",\n \"example\": 460000000026068\n },\n \"rate\": {\n \"description\": \"Unit price per item/service. Used to calculate total line item amount. Must be in purchase order currency. Tax inclusion depends on is_inclusive_tax setting. Affects pricing calculations and vendor billing.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112\n },\n \"quantity\": {\n \"description\": \"Number of units being ordered. Used with rate to calculate total line item amount. Must match unit of measurement. Represents actual order quantity for delivery.\",\n \"type\": \"string\",\n \"example\": 1\n },\n \"item_order\": {\n \"description\": \"Sequential order of line item within purchase order. Determines display order on documents and reports. Typically numbered sequentially from 0 or 1. Maintains consistency across related documents.\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax for the line item. Determines tax rate, name, and treatment for calculations. Used in tax amount computation and display on purchase order. Obtain from taxes API.\",\n \"type\": \"string\"\n },\n \"tds_tax_id\": {\n \"type\": \"string\",\n \"example\": 90300000087370,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"ID of the VAT Acquistion\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"ID of the Reverse Charge\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n }\n }\n }\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"documents\": {\n \"description\": \"Array of documents attached to the purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"description\": \"ID of the Document\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"file_name\": {\n \"description\": \"Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateZohoBookLocation.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateZohoBookLocation.json new file mode 100644 index 00000000..fb01f06b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreateZohoBookLocation.json @@ -0,0 +1,446 @@ +{ + "name": "CreateZohoBookLocation", + "fully_qualified_name": "ZohoBooksApi.CreateZohoBookLocation@0.1.0", + "description": "Create a new location in Zoho Books.\n\nUse this tool to create a new business location within Zoho Books. It handles the setup of location data, allowing integration of new physical or digital locations into the Zoho Books system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the location is being created in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "location_details", + "required": false, + "description": "A JSON object containing details for a new location, including name, type, contact details, address, and optionally, tax and user settings.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the location" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email id for the location" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number for location" + }, + "address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City Name of the location." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State Name of the location." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country Name of the location." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention of the location." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code of the location." + }, + "street_address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street Name of the location." + }, + "street_address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street Name of the location." + } + }, + "inner_properties": null, + "description": null + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location" + }, + "tax_settings_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Settings ID" + }, + "parent_location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Parent Location ID" + }, + "associated_series_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "auto_number_generation_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Autonumber generation group ID" + }, + "is_all_users_selected": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether all users are selected or not" + }, + "user_ids": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated user ids." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_location'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/locations", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "location_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the location" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email id for the location" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number for location" + }, + "address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City Name of the location." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State Name of the location." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country Name of the location." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention of the location." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code of the location." + }, + "street_address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street Name of the location." + }, + "street_address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street Name of the location." + } + }, + "inner_properties": null, + "description": null + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location" + }, + "tax_settings_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Settings ID" + }, + "parent_location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Parent Location ID" + }, + "associated_series_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "auto_number_generation_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Autonumber generation group ID" + }, + "is_all_users_selected": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether all users are selected or not" + }, + "user_ids": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated user ids." + } + }, + "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 \"required\": [\n \"location_name\",\n \"country\",\n \"tax_settings_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"description\": \"Type of the location\",\n \"type\": \"string\",\n \"example\": \"general / line_item_only\"\n },\n \"email\": {\n \"description\": \"Email id for the location\",\n \"type\": \"string\",\n \"example\": \"willsmith@bowmanfurniture.com\"\n },\n \"phone\": {\n \"description\": \"Mobile number for location\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n },\n \"address\": {\n \"type\": \"object\",\n \"properties\": {\n \"city\": {\n \"description\": \"City Name of the location.\",\n \"type\": \"string\",\n \"example\": \"New York City\"\n },\n \"state\": {\n \"description\": \"State Name of the location.\",\n \"type\": \"string\",\n \"example\": \"New York\"\n },\n \"country\": {\n \"description\": \"Country Name of the location.\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"attention\": {\n \"description\": \"Attention of the location.\",\n \"type\": \"string\"\n },\n \"state_code\": {\n \"description\": \"State code of the location.\",\n \"type\": \"string\",\n \"example\": \"NY\"\n },\n \"street_address1\": {\n \"description\": \"Street Name of the location.\",\n \"type\": \"string\",\n \"example\": \"No:234,90 Church Street\"\n },\n \"street_address2\": {\n \"description\": \"Street Name of the location.\",\n \"type\": \"string\",\n \"example\": \"McMillan Avenue\"\n }\n }\n },\n \"location_name\": {\n \"description\": \"Name of the location\",\n \"type\": \"string\",\n \"example\": \"Head Office\"\n },\n \"tax_settings_id\": {\n \"description\": \"Tax Settings ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"parent_location_id\": {\n \"description\": \"Parent Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000041010\"\n },\n \"associated_series_ids\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"982000000870911\",\n \"982000000870915\"\n ]\n },\n \"auto_number_generation_id\": {\n \"description\": \"Autonumber generation group ID\",\n \"type\": \"string\",\n \"example\": \"982000000870911\"\n },\n \"is_all_users_selected\": {\n \"description\": \"Whether all users are selected or not\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"user_ids\": {\n \"description\": \"Comma separated user ids.\",\n \"type\": \"string\",\n \"example\": \"460000000036868,460000000036869\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreditNoteRefundListing.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreditNoteRefundListing.json new file mode 100644 index 00000000..6218b629 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CreditNoteRefundListing.json @@ -0,0 +1,253 @@ +{ + "name": "CreditNoteRefundListing", + "fully_qualified_name": "ZohoBooksApi.CreditNoteRefundListing@0.1.0", + "description": "Retrieve a paginated list of credit note refunds.\n\nUse this tool to get a list of all credit note refunds, including pagination information for navigating through large sets of data.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Use this to specify which organization's credit note refunds to list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "customer_identifier", + "required": false, + "description": "ID of the customer for whom the credit note is raised. Provide to filter refunds by customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the credit note is raised." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "refunds_sort_column", + "required": false, + "description": "Specifies the attribute to sort the credit note refunds. Use values like 'refund_mode', 'reference_number', 'date', 'creditnote_number', 'customer_name', 'amount_bcy', or 'amount_fcy'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort refunds list. Allowed Values: refund_mode, reference_number, date, creditnote_number, customer_name, amount_bcy and amount_fcy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "pagination_page_number", + "required": false, + "description": "Page number for pagination to specify which page of results to retrieve. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to display per page in the paginated results. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many credit notes are returned in each page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_credit_note_refunds'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/refunds", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "customer_identifier", + "description": "Customer ID of the customer for whom the credit note is raised.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the credit note is raised." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "refunds_sort_column", + "description": "Sort refunds list. Allowed Values: refund_mode, reference_number, date, creditnote_number, customer_name, amount_bcy and amount_fcy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort refunds list. Allowed Values: refund_mode, reference_number, date, creditnote_number, customer_name, amount_bcy and amount_fcy" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "pagination_page_number", + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records per page for pagination. Controls how many credit notes are returned in each page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many credit notes are returned in each page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/CrmToBooksContactImport.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CrmToBooksContactImport.json new file mode 100644 index 00000000..23d5dd7d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/CrmToBooksContactImport.json @@ -0,0 +1,154 @@ +{ + "name": "CrmToBooksContactImport", + "fully_qualified_name": "ZohoBooksApi.CrmToBooksContactImport@0.1.0", + "description": "Import a customer from Zoho CRM to Zoho Books using CRM contact ID.\n\nUse this tool when you need to import a customer from Zoho CRM to Zoho Books based on their CRM contact ID. Ensure that Zoho Books is integrated with Zoho CRM using the correct sync settings for contacts.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "zoho_crm_contact_id", + "required": true, + "description": "Unique identifier for the Zoho CRM contact to import into Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the zoho crm contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "crm_contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'import_customer_using_crm_contact_id'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/crm/contact/{crm_contact_id}/import", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "crm_contact_id", + "tool_parameter_name": "zoho_crm_contact_id", + "description": "Unique identifier of the zoho crm contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the zoho crm contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateBankAccount.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateBankAccount.json new file mode 100644 index 00000000..ee80f9c5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateBankAccount.json @@ -0,0 +1,154 @@ +{ + "name": "DeactivateBankAccount", + "fully_qualified_name": "ZohoBooksApi.DeactivateBankAccount@0.1.0", + "description": "Deactivate a bank account in Zoho Books.\n\nUse this tool to mark a bank account as inactive in Zoho Books. This can be useful when an account is no longer in use and should be temporarily disabled.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books. This is required to identify which organization's bank account to deactivate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_id", + "required": true, + "description": "Unique identifier of the bank account to deactivate in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_bank_account_inactive'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/{account_id}/inactive", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "bank_account_id", + "description": "Unique identifier of the bank account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateChartOfAccount.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateChartOfAccount.json new file mode 100644 index 00000000..8bc841fc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateChartOfAccount.json @@ -0,0 +1,154 @@ +{ + "name": "DeactivateChartOfAccount", + "fully_qualified_name": "ZohoBooksApi.DeactivateChartOfAccount@0.1.0", + "description": "Deactivate a specific chart of account.\n\nUse this tool to mark a specific chart of account as inactive in Zoho Books. This is helpful when you need to manage account statuses and ensure they reflect current business requirements.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization to deactivate the chart of account for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_identifier", + "required": true, + "description": "The unique identifier of the account to be deactivated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_chart_of_account_inactive'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/chartofaccounts/{account_id}/inactive", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_identifier", + "description": "Unique identifier of the account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateProject.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateProject.json new file mode 100644 index 00000000..6edea426 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateProject.json @@ -0,0 +1,154 @@ +{ + "name": "DeactivateProject", + "fully_qualified_name": "ZohoBooksApi.DeactivateProject@0.1.0", + "description": "Deactivate a project in Zoho Books.\n\nUse this tool to mark a project as inactive in Zoho Books when it is no longer active or needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required for identifying the organization for the project update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_id", + "required": true, + "description": "The unique identifier of the project to be marked as inactive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_project_inactive'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/inactive", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_id", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateUserAccount.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateUserAccount.json new file mode 100644 index 00000000..e98c07b5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeactivateUserAccount.json @@ -0,0 +1,154 @@ +{ + "name": "DeactivateUserAccount", + "fully_qualified_name": "ZohoBooksApi.DeactivateUserAccount@0.1.0", + "description": "Deactivate a user's account in Zoho Books.\n\nUse this tool to mark an active user as inactive within Zoho Books. It is useful when needing to revoke access or deactivate an account.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization within Zoho Books to which the user belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "user_unique_identifier", + "required": true, + "description": "Provide the unique identifier of the user to be deactivated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_user_inactive'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/users/{user_id}/inactive", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_unique_identifier", + "description": "Unique identifier of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeclineEstimate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeclineEstimate.json new file mode 100644 index 00000000..435d278a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeclineEstimate.json @@ -0,0 +1,154 @@ +{ + "name": "DeclineEstimate", + "fully_qualified_name": "ZohoBooksApi.DeclineEstimate@0.1.0", + "description": "Marks a sent estimate as declined if rejected by customer.\n\nUse this tool to update the status of an estimate to 'declined' when a customer has rejected it. This is helpful in maintaining accurate records of customer interactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the estimate is being declined.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier of the estimate to mark as declined.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_estimate_declined'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/status/declined", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteAccount.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteAccount.json new file mode 100644 index 00000000..ca7082ca --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteAccount.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteAccount", + "fully_qualified_name": "ZohoBooksApi.DeleteAccount@0.1.0", + "description": "Delete a chart of account in Zoho Books.\n\nUse this tool to delete an existing chart of account. Note that accounts associated with transactions or products cannot be deleted.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_identifier", + "required": true, + "description": "The unique identifier for the account to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_chart_of_account'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/chartofaccounts/{account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_identifier", + "description": "Unique identifier of the account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteAssetComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteAssetComment.json new file mode 100644 index 00000000..d4bcc78b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteAssetComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteAssetComment", + "fully_qualified_name": "ZohoBooksApi.DeleteAssetComment@0.1.0", + "description": "Delete a comment from a fixed asset in Zoho Books.\n\nUse this tool to delete an existing comment on a fixed asset within Zoho Books by specifying the fixed asset and comment IDs.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization to specify which organization's asset comment you want to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier of the fixed asset to delete a comment from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + }, + { + "name": "comment_id", + "required": true, + "description": "Unique identifier of the comment to be deleted from the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_fixed_asset_comment'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_id", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBankAccount.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBankAccount.json new file mode 100644 index 00000000..15c283bf --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBankAccount.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteBankAccount", + "fully_qualified_name": "ZohoBooksApi.DeleteBankAccount@0.1.0", + "description": "Delete a bank account from your organization.\n\nUse this tool to permanently delete a bank account associated with your organization in Zoho Books. This should be called when you need to remove an account to prevent future transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to identify which organization's bank account is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_unique_id", + "required": true, + "description": "Unique identifier of the bank account to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_bank_account'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/{account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "bank_account_unique_id", + "description": "Unique identifier of the bank account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBankAccountRule.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBankAccountRule.json new file mode 100644 index 00000000..f4970275 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBankAccountRule.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteBankAccountRule", + "fully_qualified_name": "ZohoBooksApi.DeleteBankAccountRule@0.1.0", + "description": "Deletes a bank account rule, removing its effect on transactions.\n\nUse this tool to delete a specific bank account rule, making it inapplicable to future transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID representing the organization. Required for identifying the correct account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_rule_id", + "required": true, + "description": "Unique identifier of the bank account rule to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_bank_account_rule'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/rules/{rule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rule_id", + "tool_parameter_name": "bank_account_rule_id", + "description": "Unique identifier of the bank account rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account rule." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBankTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBankTransaction.json new file mode 100644 index 00000000..41c386f3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBankTransaction.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteBankTransaction", + "fully_qualified_name": "ZohoBooksApi.DeleteBankTransaction@0.1.0", + "description": "Delete a bank transaction using its ID.\n\nUse this tool to delete a specific bank transaction by providing the transaction ID. Ideal for managing and cleaning up bank account transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Specify the ID of the organization to target for transaction deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "Unique identifier for the bank transaction to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bank_transaction_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/{bank_transaction_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bank_transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBillAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBillAttachment.json new file mode 100644 index 00000000..42dd8094 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBillAttachment.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteBillAttachment", + "fully_qualified_name": "ZohoBooksApi.DeleteBillAttachment@0.1.0", + "description": "Delete the file attached to a specific bill.\n\nThis tool deletes the file attached to a specified bill in Zoho Books. It should be called when there's a need to remove an attachment associated with a bill.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization within Zoho Books. This is required to specify which organization's bill attachment is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_unique_identifier", + "required": true, + "description": "Unique identifier for the specific bill whose attachment is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_bill_attachment'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/attachment", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_unique_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBillComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBillComment.json new file mode 100644 index 00000000..87b7105d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBillComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteBillComment", + "fully_qualified_name": "ZohoBooksApi.DeleteBillComment@0.1.0", + "description": "Delete a specific comment from a bill in Zoho Books.\n\nUse this tool to remove a comment from a specific bill in Zoho Books when the comment is no longer needed or was made in error.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization from which the bill comment will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "The unique identifier for the bill from which the comment will be deleted. This ID is necessary to specify the correct bill in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "comment_id", + "required": true, + "description": "Unique identifier of the comment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_bill_comment'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_id", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBillPayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBillPayment.json new file mode 100644 index 00000000..8eb8bdd8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteBillPayment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteBillPayment", + "fully_qualified_name": "ZohoBooksApi.DeleteBillPayment@0.1.0", + "description": "Delete a payment made to a bill.\n\nUse this tool to delete an existing payment associated with a bill when necessary. It helps in managing and correcting payment records in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which the bill payment is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier of the bill to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "bill_payment_identifier", + "required": true, + "description": "Unique identifier of the bill payment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_payment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_bill_payment'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/payments/{bill_payment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_payment_id", + "tool_parameter_name": "bill_payment_identifier", + "description": "Unique identifier of the bill payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill payment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteContact.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteContact.json new file mode 100644 index 00000000..c578833e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteContact.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteContact", + "fully_qualified_name": "ZohoBooksApi.DeleteContact@0.1.0", + "description": "Delete an existing contact from the system.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization from which the contact will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_unique_identifier", + "required": true, + "description": "Unique identifier of the contact to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_contact'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_unique_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteContactAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteContactAddress.json new file mode 100644 index 00000000..ead0d19a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteContactAddress.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteContactAddress", + "fully_qualified_name": "ZohoBooksApi.DeleteContactAddress@0.1.0", + "description": "Deletes an additional address of a contact.\n\nThis tool deletes an additional address of a specific contact in Zoho Books when given the contact and address IDs. Use it to manage contact address details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique ID of the organization in Zoho Books required for address deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_unique_id", + "required": true, + "description": "Unique identifier for the contact whose address you want to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "address_identifier", + "required": true, + "description": "Unique identifier of the address to be deleted for the specified contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the address." + }, + "inferrable": true, + "http_endpoint_parameter_name": "address_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_contact_address'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/address/{address_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_unique_id", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "address_id", + "tool_parameter_name": "address_identifier", + "description": "Unique identifier of the address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the address." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteContactPerson.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteContactPerson.json new file mode 100644 index 00000000..db74cd50 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteContactPerson.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteContactPerson", + "fully_qualified_name": "ZohoBooksApi.DeleteContactPerson@0.1.0", + "description": "Delete an existing contact person from the records.\n\nUse this tool to remove a contact person using their unique ID from the records. It should be called when a user's contact details are no longer needed or need to be removed for any reason.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to identify which entity the contact person belongs to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_person_id", + "required": true, + "description": "Unique identifier for the contact person to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact person." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_person_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_contact_person'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/contactpersons/{contact_person_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_person_id", + "tool_parameter_name": "contact_person_id", + "description": "Unique identifier of the contact person.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact person." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNote.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNote.json new file mode 100644 index 00000000..dd6b4ee0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNote.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteCreditNote", + "fully_qualified_name": "ZohoBooksApi.DeleteCreditNote@0.1.0", + "description": "Delete an existing credit note using its ID.\n\nUse this tool to delete a specific credit note by providing its unique ID. This action is irreversible.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose credit note you wish to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_credit_note'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNoteComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNoteComment.json new file mode 100644 index 00000000..19d560b7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNoteComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteCreditNoteComment", + "fully_qualified_name": "ZohoBooksApi.DeleteCreditNoteComment@0.1.0", + "description": "Delete a specific comment from a credit note.\n\nUse this tool to delete a comment from a credit note in Zoho Books. It requires the credit note ID and the comment ID to specify which comment to remove.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required for deleting a credit note comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to which the comment belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "comment_unique_identifier", + "required": true, + "description": "The unique ID of the comment to be deleted from a credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_credit_note_comment'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_unique_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNoteInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNoteInvoice.json new file mode 100644 index 00000000..a55e58ce --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNoteInvoice.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteCreditNoteInvoice", + "fully_qualified_name": "ZohoBooksApi.DeleteCreditNoteInvoice@0.1.0", + "description": "Delete the credits applied to an invoice of a credit note.\n\nUse this tool to remove credits applied to an invoice associated with a credit note, ensuring the invoice record reflects modified credits.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to identify which organization's data is being manipulated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_unique_id", + "required": true, + "description": "Unique identifier for the credit note to delete its associated invoice credits.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "credit_note_invoice_id", + "required": true, + "description": "Unique identifier of the credit note invoice to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_invoice_of_credit_note'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/invoices/{creditnote_invoice_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_unique_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_invoice_id", + "tool_parameter_name": "credit_note_invoice_id", + "description": "Unique identifier of the credit note invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNoteRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNoteRefund.json new file mode 100644 index 00000000..5a534efb --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCreditNoteRefund.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteCreditNoteRefund", + "fully_qualified_name": "ZohoBooksApi.DeleteCreditNoteRefund@0.1.0", + "description": "Delete a specific credit note refund by ID.\n\nUse this tool to remove a credit note refund for a given credit note and refund ID when it's no longer needed or was made in error.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to delete a credit note refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to be refunded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "credit_note_refund_id", + "required": true, + "description": "Unique identifier of the credit note refund to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_refund_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_credit_note_refund'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds/{creditnote_refund_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_refund_id", + "tool_parameter_name": "credit_note_refund_id", + "description": "Unique identifier of the credit note refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note refund." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCurrencyAdjustment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCurrencyAdjustment.json new file mode 100644 index 00000000..690b1ce2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCurrencyAdjustment.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteCurrencyAdjustment", + "fully_qualified_name": "ZohoBooksApi.DeleteCurrencyAdjustment@0.1.0", + "description": "Deletes the specified base currency adjustment.\n\nUse this tool to delete a specific base currency adjustment by providing its ID. Useful for managing and updating financial records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization whose currency adjustment you want to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "base_currency_adjustment_id", + "required": true, + "description": "Unique identifier of the base currency adjustment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the base currency adjustment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "base_currency_adjustment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_base_currency_adjustment'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/basecurrencyadjustment/{base_currency_adjustment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "base_currency_adjustment_id", + "tool_parameter_name": "base_currency_adjustment_id", + "description": "Unique identifier of the base currency adjustment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the base currency adjustment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomModule.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomModule.json new file mode 100644 index 00000000..fc85d02b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomModule.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteCustomModule", + "fully_qualified_name": "ZohoBooksApi.DeleteCustomModule@0.1.0", + "description": "Deletes a specified custom module in Zoho Books.\n\nThis tool is used to delete a custom module within Zoho Books. It should be called when you need to remove a specific custom module by its name.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "module_name", + "required": true, + "description": "The name of the custom module to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_custom_module'.", + "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": [ + "ZohoBooks.custommodules.ALL" + ] + } + }, + "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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/{module_name}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_name", + "tool_parameter_name": "module_name", + "description": "Module Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomModuleRecord.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomModuleRecord.json new file mode 100644 index 00000000..74774864 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomModuleRecord.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteCustomModuleRecord", + "fully_qualified_name": "ZohoBooksApi.DeleteCustomModuleRecord@0.1.0", + "description": "Delete an individual record from a custom module.\n\nUse this tool to delete specific records from a custom module in Zoho Books. Provide the module name and module ID to identify and remove the desired record.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's module record to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "module_name", + "required": true, + "description": "Name of the custom module containing the record to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_name" + }, + { + "name": "custom_module_id", + "required": true, + "description": "The unique integer ID of the custom module to be deleted.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom Module ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_custom_module_record'.", + "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": [ + "ZohoBooks.custommodules.ALL" + ] + } + }, + "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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/{module_name}/{module_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_name", + "tool_parameter_name": "module_name", + "description": "Module Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_id", + "tool_parameter_name": "custom_module_id", + "description": "Custom Module ID", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom Module ID" + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomerDebitNote.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomerDebitNote.json new file mode 100644 index 00000000..83145610 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomerDebitNote.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteCustomerDebitNote", + "fully_qualified_name": "ZohoBooksApi.DeleteCustomerDebitNote@0.1.0", + "description": "Delete an existing customer debit note in Zoho Books.\n\nUse this tool to delete a customer debit note in Zoho Books. Note that debit notes with payments or credit notes applied cannot be deleted.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization within Zoho Books. Required to specify which organization's data to access or modify.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "debit_note_unique_id", + "required": true, + "description": "Unique identifier for the debit note to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the debit note" + }, + "inferrable": true, + "http_endpoint_parameter_name": "debit_note_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_customer_debit_note'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{debit_note_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "Organization ID for the request", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "debit_note_id", + "tool_parameter_name": "debit_note_unique_id", + "description": "Unique identifier for the debit note", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the debit note" + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomerPayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomerPayment.json new file mode 100644 index 00000000..e8b7d0f7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomerPayment.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteCustomerPayment", + "fully_qualified_name": "ZohoBooksApi.DeleteCustomerPayment@0.1.0", + "description": "Delete an existing payment for a customer.\n\nUse this tool when you need to delete a specific customer payment by its payment ID. It confirms the removal of the payment record.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose payment is being deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_identifier", + "required": true, + "description": "Unique identifier for the payment to be deleted. Required to specify which payment record should be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_customer_payment'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments/{payment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_identifier", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomerPaymentRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomerPaymentRefund.json new file mode 100644 index 00000000..73e33e63 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteCustomerPaymentRefund.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteCustomerPaymentRefund", + "fully_qualified_name": "ZohoBooksApi.DeleteCustomerPaymentRefund@0.1.0", + "description": "Delete a refund for an existing customer payment.\n\nThis tool should be called when you need to delete a refund associated with an existing customer payment in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the refund deletion is requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "customer_payment_identifier", + "required": true, + "description": "The unique identifier for the customer payment associated with the refund to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_payment_id" + }, + { + "name": "refund_identifier", + "required": true, + "description": "Unique identifier of the refund to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "refund_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_customer_payment_refund'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds/{refund_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_payment_id", + "tool_parameter_name": "customer_payment_identifier", + "description": "Unique identifier of the customer payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "refund_id", + "tool_parameter_name": "refund_identifier", + "description": "Unique identifier of the refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the refund." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteEmployeeRecord.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteEmployeeRecord.json new file mode 100644 index 00000000..c4fd059c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteEmployeeRecord.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteEmployeeRecord", + "fully_qualified_name": "ZohoBooksApi.DeleteEmployeeRecord@0.1.0", + "description": "Remove an employee from the records in Zoho Books.\n\nThis tool is used to delete an existing employee in Zoho Books. It should be called when there is a need to permanently remove an employee's record from the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization to uniquely identify it for employee deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "employee_identifier", + "required": true, + "description": "The unique identifier for the employee to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "employee_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_employee'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/employee/{employee_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "employee_id", + "tool_parameter_name": "employee_identifier", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteEstimate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteEstimate.json new file mode 100644 index 00000000..7cb65f17 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteEstimate.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteEstimate", + "fully_qualified_name": "ZohoBooksApi.DeleteEstimate@0.1.0", + "description": "Delete an existing estimate in Zoho Books.\n\nUse this tool to remove an estimate by providing its unique estimate ID in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization where the estimate will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_id", + "required": true, + "description": "Unique identifier for the estimate to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_estimate'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_id", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteEstimateComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteEstimateComment.json new file mode 100644 index 00000000..056dbb2c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteEstimateComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteEstimateComment", + "fully_qualified_name": "ZohoBooksApi.DeleteEstimateComment@0.1.0", + "description": "Delete an estimate comment.\n\nUse this tool to remove a comment from an estimate in Zoho Books. Ideal for cleaning up or managing comments related to estimates.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization where the estimate comment is located.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_unique_id", + "required": true, + "description": "The unique identifier for the estimate, required to specify which estimate's comment to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "comment_unique_identifier", + "required": true, + "description": "Unique identifier of the comment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_estimate_comment'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_unique_id", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_unique_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExchangeRate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExchangeRate.json new file mode 100644 index 00000000..ee8cbbf3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExchangeRate.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteExchangeRate", + "fully_qualified_name": "ZohoBooksApi.DeleteExchangeRate@0.1.0", + "description": "Delete an exchange rate for a specific currency.\n\nUse this tool to delete an exchange rate using the specified currency and exchange rate IDs.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the exchange rate is being deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_identifier", + "required": true, + "description": "Unique identifier for the currency whose exchange rate is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + }, + { + "name": "exchange_rate_identifier", + "required": true, + "description": "Unique identifier for the exchange rate to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the exchange rate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "exchange_rate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_exchange_rate'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates/{exchange_rate_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "currency_identifier", + "description": "Unique identifier of the currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "exchange_rate_id", + "tool_parameter_name": "exchange_rate_identifier", + "description": "Unique identifier of the exchange rate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the exchange rate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExistingBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExistingBill.json new file mode 100644 index 00000000..ac3a4125 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExistingBill.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteExistingBill", + "fully_qualified_name": "ZohoBooksApi.DeleteExistingBill@0.1.0", + "description": "Deletes an existing bill if no payments are applied.\n\nCall this tool to delete a bill in Zoho Books if the bill has no payments applied. It confirms successful deletion of the bill.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books needed to delete the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "The unique identifier of the bill you wish to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExpenseEntry.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExpenseEntry.json new file mode 100644 index 00000000..1cd1efed --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExpenseEntry.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteExpenseEntry", + "fully_qualified_name": "ZohoBooksApi.DeleteExpenseEntry@0.1.0", + "description": "Delete an existing expense entry in Zoho Books.\n\nUse this tool to delete a specific expense entry from Zoho Books when you need to remove an incorrect or unnecessary record.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "expense_identifier", + "required": true, + "description": "Unique identifier of the expense to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses/{expense_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expense_id", + "tool_parameter_name": "expense_identifier", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExpenseReceipt.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExpenseReceipt.json new file mode 100644 index 00000000..eae9d32d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteExpenseReceipt.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteExpenseReceipt", + "fully_qualified_name": "ZohoBooksApi.DeleteExpenseReceipt@0.1.0", + "description": "Deletes the receipt attached to an expense.\n\nUse this tool to remove the receipt associated with a specific expense in Zoho Books, identified by the expense ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the expense receipt is to be deleted. Ensure it's accurate to target the correct entity.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "expense_id", + "required": true, + "description": "Unique identifier for the expense whose receipt is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_expense_receipt'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses/{expense_id}/receipt", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expense_id", + "tool_parameter_name": "expense_id", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteFixedAsset.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteFixedAsset.json new file mode 100644 index 00000000..f059fc56 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteFixedAsset.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteFixedAsset", + "fully_qualified_name": "ZohoBooksApi.DeleteFixedAsset@0.1.0", + "description": "Delete a specified fixed asset.\n\nUse this tool to delete a fixed asset by providing its ID. This action is irreversible, so ensure you have the correct ID before proceeding.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization from which the fixed asset will be deleted. Ensure this ID corresponds to the correct organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier of the fixed asset to be deleted. This ID is required to specify which asset to remove.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_fixed_asset'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteFixedAssetType.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteFixedAssetType.json new file mode 100644 index 00000000..14d7c93f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteFixedAssetType.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteFixedAssetType", + "fully_qualified_name": "ZohoBooksApi.DeleteFixedAssetType@0.1.0", + "description": "Deletes a specified fixed asset type from the system.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_type_identifier", + "required": true, + "description": "Unique identifier for the fixed asset type to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_type_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_fixed_asset_type'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassettypes/{fixed_asset_type_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_type_id", + "tool_parameter_name": "fixed_asset_type_identifier", + "description": "Unique identifier of the fixed asset type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset type." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceAttachment.json new file mode 100644 index 00000000..c3937d94 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceAttachment.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteInvoiceAttachment", + "fully_qualified_name": "ZohoBooksApi.DeleteInvoiceAttachment@0.1.0", + "description": "Delete the file attached to an invoice.\n\nThis tool should be called to delete an attachment from a specified invoice in Zoho Books. Useful for managing or cleaning up invoice files.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the invoice attachment will be deleted. This is required to authenticate and identify the specific organization on Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to delete the attachment from. Must match the invoice's ID in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_invoice_attachment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/attachment", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceComment.json new file mode 100644 index 00000000..b04d8999 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteInvoiceComment", + "fully_qualified_name": "ZohoBooksApi.DeleteInvoiceComment@0.1.0", + "description": "Delete a specific comment from an invoice.\n\nUse this tool to remove a comment from an invoice in Zoho Books. It is useful when a comment is no longer relevant or was added by mistake.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to delete the comment from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "comment_unique_identifier", + "required": true, + "description": "The unique identifier for the comment to be deleted from the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_invoice_comment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_unique_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceDocument.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceDocument.json new file mode 100644 index 00000000..c19e79bf --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceDocument.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteInvoiceDocument", + "fully_qualified_name": "ZohoBooksApi.DeleteInvoiceDocument@0.1.0", + "description": "Delete a document attached to an invoice.\n\nPermanently removes a document from an invoice in Zoho Books. This tool should be called when there is a need to delete a specific non-system-generated document associated with an invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is required to specify which organization's invoice document is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_id", + "required": true, + "description": "The unique identifier of the invoice from which the document will be deleted. This ID is required and must be a valid invoice in the system.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "invoice_document_id", + "required": true, + "description": "The unique ID of the document to be deleted from the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "document_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_invoice_document'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/documents/{document_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "document_id", + "tool_parameter_name": "invoice_document_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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceExpenseReceipt.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceExpenseReceipt.json new file mode 100644 index 00000000..980a6747 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceExpenseReceipt.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteInvoiceExpenseReceipt", + "fully_qualified_name": "ZohoBooksApi.DeleteInvoiceExpenseReceipt@0.1.0", + "description": "Delete attached expense receipts from an invoice.\n\nUse this tool to delete expense receipts that are attached to an invoice, specifically those raised from an expense.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization from which the expense receipt will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "expense_identifier", + "required": true, + "description": "Unique identifier of the expense to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_invoice_expense_receipt'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/expenses/{expense_id}/receipt", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expense_id", + "tool_parameter_name": "expense_identifier", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceInZohoBooks.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceInZohoBooks.json new file mode 100644 index 00000000..fdbf0218 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoiceInZohoBooks.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteInvoiceInZohoBooks", + "fully_qualified_name": "ZohoBooksApi.DeleteInvoiceInZohoBooks@0.1.0", + "description": "Delete an existing invoice in Zoho Books.\n\nUse this tool to delete an existing invoice in Zoho Books. Note that invoices with payments or credit notes applied cannot be deleted.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the invoice is to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoicePayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoicePayment.json new file mode 100644 index 00000000..9420405c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteInvoicePayment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteInvoicePayment", + "fully_qualified_name": "ZohoBooksApi.DeleteInvoicePayment@0.1.0", + "description": "Delete a payment made to an invoice in Zoho Books.\n\nUse this tool to remove a payment record from an invoice in Zoho Books when it was entered incorrectly or is no longer needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books to which the payment belongs. This is required to identify the specific organization for deleting the invoice payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to delete the payment from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "invoice_payment_identifier", + "required": true, + "description": "Unique identifier of the invoice payment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_payment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_invoice_payment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/payments/{invoice_payment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_payment_id", + "tool_parameter_name": "invoice_payment_identifier", + "description": "Unique identifier of the invoice payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice payment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteItemInZohoBooks.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteItemInZohoBooks.json new file mode 100644 index 00000000..73b8c63e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteItemInZohoBooks.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteItemInZohoBooks", + "fully_qualified_name": "ZohoBooksApi.DeleteItemInZohoBooks@0.1.0", + "description": "Delete an item from Zoho Books.\n\nThis tool deletes an item from Zoho Books. It should be called to remove items that are no longer needed, provided they are not part of any transaction.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books from which you wish to delete the item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "item_identifier", + "required": true, + "description": "Unique identifier of the item to be deleted from Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_item'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/items/{item_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "item_identifier", + "description": "Unique identifier of the item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteJournalComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteJournalComment.json new file mode 100644 index 00000000..d550ce94 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteJournalComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteJournalComment", + "fully_qualified_name": "ZohoBooksApi.DeleteJournalComment@0.1.0", + "description": "Delete a journal comment in Zoho Books.\n\nUse this tool to delete a specific comment from a journal entry in Zoho Books. It should be called when you need to remove unwanted or incorrect comments from a journal.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's journal comment should be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "journal_unique_id", + "required": true, + "description": "Unique identifier of the journal for which the comment will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "journal_id" + }, + { + "name": "comment_id", + "required": true, + "description": "Unique identifier of the comment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_journal_comment'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/journals/{journal_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "journal_id", + "tool_parameter_name": "journal_unique_id", + "description": "Unique identifier of the journal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_id", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteJournalEntry.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteJournalEntry.json new file mode 100644 index 00000000..3f26bd15 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteJournalEntry.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteJournalEntry", + "fully_qualified_name": "ZohoBooksApi.DeleteJournalEntry@0.1.0", + "description": "Delete a specific journal entry by ID.\n\nThis tool deletes a journal entry in Zoho Books when provided with the specific journal ID. Use this to remove incorrect or unnecessary journal records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization associated with the journal to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "journal_entry_id", + "required": true, + "description": "The unique identifier for the journal entry to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "journal_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_journal'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/journals/{journal_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "journal_id", + "tool_parameter_name": "journal_entry_id", + "description": "Unique identifier of the journal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteLastImportedBankStatement.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteLastImportedBankStatement.json new file mode 100644 index 00000000..f911052d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteLastImportedBankStatement.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteLastImportedBankStatement", + "fully_qualified_name": "ZohoBooksApi.DeleteLastImportedBankStatement@0.1.0", + "description": "Delete the last imported bank statement.\n\nUse this tool to delete the most recently imported bank statement from the specified bank account. Useful for correcting errors or removing unnecessary data.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. This is required to specify which organization's bank statement needs to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_unique_identifier", + "required": true, + "description": "Unique identifier for the bank account from which the statement will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "bank_statement_id", + "required": true, + "description": "Unique identifier of the bank statement to be deleted. Required for identifying which statement to remove.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank statement." + }, + "inferrable": true, + "http_endpoint_parameter_name": "statement_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_last_imported_bank_statement'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/{account_id}/statement/{statement_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "bank_account_unique_identifier", + "description": "Unique identifier of the bank account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "statement_id", + "tool_parameter_name": "bank_statement_id", + "description": "Unique identifier of the bank statement.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank statement." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteLocation.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteLocation.json new file mode 100644 index 00000000..0e415fa0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteLocation.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteLocation", + "fully_qualified_name": "ZohoBooksApi.DeleteLocation@0.1.0", + "description": "Delete a location from the system.\n\nUse this tool to remove a location by specifying its unique identifier in the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to which the location belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "location_id", + "required": true, + "description": "The unique identifier of the location to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "inferrable": true, + "http_endpoint_parameter_name": "location_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_location'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/locations/{location_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "location_id", + "tool_parameter_name": "location_id", + "description": "Unique identifier of the location.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteLoggedTimeEntry.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteLoggedTimeEntry.json new file mode 100644 index 00000000..eeb50ee6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteLoggedTimeEntry.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteLoggedTimeEntry", + "fully_qualified_name": "ZohoBooksApi.DeleteLoggedTimeEntry@0.1.0", + "description": "Delete a specific logged time entry.\n\nUse this tool to delete a logged time entry from a project by specifying the time entry ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization from which the time entry will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "time_entry_identifier", + "required": true, + "description": "Unique identifier for the logged time entry to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the time entry." + }, + "inferrable": true, + "http_endpoint_parameter_name": "time_entry_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_time_entry'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/timeentries/{time_entry_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "time_entry_id", + "tool_parameter_name": "time_entry_identifier", + "description": "Unique identifier of the time entry.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the time entry." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteMultipleVendorPayments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteMultipleVendorPayments.json new file mode 100644 index 00000000..676c6e92 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteMultipleVendorPayments.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteMultipleVendorPayments", + "fully_qualified_name": "ZohoBooksApi.DeleteMultipleVendorPayments@0.1.0", + "description": "Delete multiple vendor payments in one action.\n\nUse this tool to delete multiple vendor payments at once, streamlining payment management and cleanup tasks.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization from which the vendor payments are to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_payment_ids", + "required": true, + "description": "Comma-separated list of vendor payment IDs to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of vendor payment IDs to be deleted" + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendorpayment_id" + }, + { + "name": "bulk_delete", + "required": true, + "description": "Set to true to perform bulk deletion of vendor payments.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to indicate bulk delete operation" + }, + "inferrable": true, + "http_endpoint_parameter_name": "bulk_delete" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_delete_vendor_payments'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendorpayment_id", + "tool_parameter_name": "vendor_payment_ids", + "description": "Comma-separated list of vendor payment IDs to be deleted", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of vendor payment IDs to be deleted" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bulk_delete", + "tool_parameter_name": "bulk_delete", + "description": "Flag to indicate bulk delete operation", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to indicate bulk delete operation" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteOpeningBalance.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteOpeningBalance.json new file mode 100644 index 00000000..8c7d28d8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteOpeningBalance.json @@ -0,0 +1,121 @@ +{ + "name": "DeleteOpeningBalance", + "fully_qualified_name": "ZohoBooksApi.DeleteOpeningBalance@0.1.0", + "description": "Delete the entered opening balance in Zoho Books.\n\nUse this tool to remove the existing opening balance from Zoho Books settings when adjustments or corrections are needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose opening balance is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_opening_balance'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/openingbalances", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteProject.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteProject.json new file mode 100644 index 00000000..90067bde --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteProject.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteProject", + "fully_qualified_name": "ZohoBooksApi.DeleteProject@0.1.0", + "description": "Deletes an existing project in Zoho Books.\n\nCall this tool to delete an existing project in Zoho Books using the project ID. It confirms the deletion of the specified project.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to identify the organization from which the project will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_id", + "required": true, + "description": "Unique identifier of the project to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_project'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_id", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteProjectComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteProjectComment.json new file mode 100644 index 00000000..744ef0e8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteProjectComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteProjectComment", + "fully_qualified_name": "ZohoBooksApi.DeleteProjectComment@0.1.0", + "description": "Delete a specific comment from a project.\n\nUse this tool to delete a comment from a specified project. Useful when you need to remove unwanted or outdated comments from project discussions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the comment is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "Unique identifier of the project to delete the comment from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "comment_unique_identifier", + "required": true, + "description": "Unique identifier for the comment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_project_comment'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_unique_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteProjectTask.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteProjectTask.json new file mode 100644 index 00000000..d50d4d46 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteProjectTask.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteProjectTask", + "fully_qualified_name": "ZohoBooksApi.DeleteProjectTask@0.1.0", + "description": "Remove a task from a specific project in Zoho Books.\n\nCall this tool to delete a specified task from a project using Zoho Books API. Use it when you need to manage project tasks and remove any that are no longer relevant.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization to which the task belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "Unique identifier for the project from which a task will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "task_identifier", + "required": true, + "description": "Unique identifier of the task to be deleted in the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the task." + }, + "inferrable": true, + "http_endpoint_parameter_name": "task_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_task'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/tasks/{task_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "task_id", + "tool_parameter_name": "task_identifier", + "description": "Unique identifier of the task.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the task." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeletePurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeletePurchaseOrder.json new file mode 100644 index 00000000..78291df0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeletePurchaseOrder.json @@ -0,0 +1,154 @@ +{ + "name": "DeletePurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.DeletePurchaseOrder@0.1.0", + "description": "Delete an existing purchase order in Zoho Books.\n\nUse this tool to remove a purchase order by providing its ID. The endpoint confirms the deletion once the operation is successful.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization within Zoho Books. Required to specify which organization's purchase order is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_identifier", + "required": true, + "description": "Unique identifier for the purchase order to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchase_order_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_purchase_order'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchase_order_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchase_order_id", + "tool_parameter_name": "purchase_order_identifier", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeletePurchaseOrderAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeletePurchaseOrderAttachment.json new file mode 100644 index 00000000..2bebd66f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeletePurchaseOrderAttachment.json @@ -0,0 +1,154 @@ +{ + "name": "DeletePurchaseOrderAttachment", + "fully_qualified_name": "ZohoBooksApi.DeletePurchaseOrderAttachment@0.1.0", + "description": "Deletes the attachment from a purchase order.\n\nThis tool is used to delete the file attached to a specified purchase order in Zoho Books, identified by the purchase order ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. This is required to specify which organization's records to access or modify.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "Unique identifier of the purchase order to delete the attachment from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_purchase_order_attachment'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/attachment", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeletePurchaseOrderComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeletePurchaseOrderComment.json new file mode 100644 index 00000000..e0d65d15 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeletePurchaseOrderComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeletePurchaseOrderComment", + "fully_qualified_name": "ZohoBooksApi.DeletePurchaseOrderComment@0.1.0", + "description": "Delete a comment from a purchase order.\n\nUse this tool to remove a specific comment associated with a purchase order by providing the purchase order ID and the comment ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Provide this to specify which organization's purchase order comment you wish to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "Unique identifier of the purchase order to delete the comment from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "comment_unique_identifier", + "required": true, + "description": "Unique identifier of the comment to be deleted. Required to specify which comment to remove from a purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_purchase_order_comment'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_unique_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRecurringBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRecurringBill.json new file mode 100644 index 00000000..89c813dc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRecurringBill.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteRecurringBill", + "fully_qualified_name": "ZohoBooksApi.DeleteRecurringBill@0.1.0", + "description": "Delete an existing recurring bill in Zoho Books.\n\nUse this tool to delete a recurring bill identified by its ID in Zoho Books. This is useful when managing financial records and removing bills that are no longer needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization in Zoho Books to delete a recurring bill from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_bill_identifier", + "required": true, + "description": "Unique identifier of the recurring bill to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_recurring_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurring_bills/{recurring_bill_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_bill_id", + "tool_parameter_name": "recurring_bill_identifier", + "description": "Unique identifier of the recurring bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRecurringExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRecurringExpense.json new file mode 100644 index 00000000..b1d2bf93 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRecurringExpense.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteRecurringExpense", + "fully_qualified_name": "ZohoBooksApi.DeleteRecurringExpense@0.1.0", + "description": "Delete an existing recurring expense in Zoho Books.\n\nUse this tool to delete a recurring expense from Zoho Books when it's no longer needed or has been replaced. The tool confirms the successful removal of the specified recurring expense.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_expense_id", + "required": true, + "description": "The unique identifier for the recurring expense to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_recurring_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_expense_id", + "tool_parameter_name": "recurring_expense_id", + "description": "Unique identifier of the recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRecurringInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRecurringInvoice.json new file mode 100644 index 00000000..7b97272a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRecurringInvoice.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteRecurringInvoice", + "fully_qualified_name": "ZohoBooksApi.DeleteRecurringInvoice@0.1.0", + "description": "Delete an existing recurring invoice.\n\nCall this tool to remove a recurring invoice from the system. Ensure you have the correct invoice ID to successfully delete the desired invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to which the recurring invoice belongs. Required for identifying the correct organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_invoice_id", + "required": true, + "description": "Unique identifier for the recurring invoice to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_recurring_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_invoice_id", + "tool_parameter_name": "recurring_invoice_id", + "description": "Unique identifier of the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRetainerInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRetainerInvoice.json new file mode 100644 index 00000000..51e39200 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRetainerInvoice.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteRetainerInvoice", + "fully_qualified_name": "ZohoBooksApi.DeleteRetainerInvoice@0.1.0", + "description": "Delete an existing retainer invoice.\n\nUse this tool to delete a retainer invoice. Note that invoices with applied payments or credit notes cannot be deleted.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization whose retainer invoice you want to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_identifier", + "required": true, + "description": "Unique identifier of the retainer invoice to delete. Required for specifying the invoice to be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_retainer_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_identifier", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRetainerInvoiceAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRetainerInvoiceAttachment.json new file mode 100644 index 00000000..112522fb --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRetainerInvoiceAttachment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteRetainerInvoiceAttachment", + "fully_qualified_name": "ZohoBooksApi.DeleteRetainerInvoiceAttachment@0.1.0", + "description": "Delete a file attached to a retainer invoice.\n\nUse this tool to delete a specific file attached to a retainer invoice. Call it when you need to remove an attachment from an invoice in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books whose invoice attachment is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to specify which invoice's attachment should be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + }, + { + "name": "document_id", + "required": true, + "description": "Unique identifier of the retainer invoice document to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice document." + }, + "inferrable": true, + "http_endpoint_parameter_name": "document_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_retainer_invoice_attachment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/documents/{document_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "document_id", + "tool_parameter_name": "document_id", + "description": "Unique identifier of the retainer invoice document.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice document." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRetainerInvoiceComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRetainerInvoiceComment.json new file mode 100644 index 00000000..41bd5a08 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteRetainerInvoiceComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteRetainerInvoiceComment", + "fully_qualified_name": "ZohoBooksApi.DeleteRetainerInvoiceComment@0.1.0", + "description": "Remove a specific comment from a retainer invoice.\n\nUse this tool to delete a comment from a retainer invoice in Zoho Books by providing the retainer invoice ID and the comment ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization within Zoho Books for which the comment is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to find the specific invoice for comment deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + }, + { + "name": "comment_identifier", + "required": true, + "description": "Unique identifier of the comment to be deleted from the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_retainer_invoice_comment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesOrder.json new file mode 100644 index 00000000..bcfd7649 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesOrder.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteSalesOrder", + "fully_qualified_name": "ZohoBooksApi.DeleteSalesOrder@0.1.0", + "description": "Delete an existing sales order.\n\nUse this tool to delete an existing sales order by its ID. It cannot delete invoiced sales orders.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization for which the sales order will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier for the sales order to be deleted. Ensure it is not invoiced.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_sales_order'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesOrderAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesOrderAttachment.json new file mode 100644 index 00000000..de0f88e2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesOrderAttachment.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteSalesOrderAttachment", + "fully_qualified_name": "ZohoBooksApi.DeleteSalesOrderAttachment@0.1.0", + "description": "Delete an attached file from a sales order in Zoho Books.\n\nCall this tool to remove an attached file from a specified sales order in Zoho Books. Useful for managing and updating records by deleting unnecessary or outdated attachments.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization whose sales order attachment is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier for the sales order from which the attachment will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_sales_order_attachment'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/attachment", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesOrderComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesOrderComment.json new file mode 100644 index 00000000..8c24377f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesOrderComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteSalesOrderComment", + "fully_qualified_name": "ZohoBooksApi.DeleteSalesOrderComment@0.1.0", + "description": "Delete a comment from a sales order in Zoho Books.\n\nUse this tool to remove a comment from a specific sales order in Zoho Books by providing the sales order ID and the comment ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization. This ID is required to specify which organization's sales order comment needs to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to delete the comment from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "comment_identifier", + "required": true, + "description": "Unique identifier of the comment to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_sales_order_comment'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesReceipt.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesReceipt.json new file mode 100644 index 00000000..ba339f4e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteSalesReceipt.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteSalesReceipt", + "fully_qualified_name": "ZohoBooksApi.DeleteSalesReceipt@0.1.0", + "description": "Delete an existing sales receipt in Zoho Books.\n\nThis tool deletes a specified sales receipt from Zoho Books. It should be used when you need to permanently remove a sales receipt by its ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_receipt_id", + "required": true, + "description": "The unique identifier for the sales receipt 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": "sales_receipt_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_sales_receipt'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesreceipts/{sales_receipt_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sales_receipt_id", + "tool_parameter_name": "sales_receipt_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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTax.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTax.json new file mode 100644 index 00000000..29c977df --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTax.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteTax", + "fully_qualified_name": "ZohoBooksApi.DeleteTax@0.1.0", + "description": "Delete a simple or compound tax in Zoho Books.\n\nUse this tool to remove a specific tax, whether simple or compound, from the Zoho Books system. This is useful when managing taxes and ensuring only relevant ones are active.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization within Zoho Books. This is required to specify which organization's tax entry to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_identifier", + "required": true, + "description": "Unique identifier of the tax to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_tax'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxes/{tax_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_id", + "tool_parameter_name": "tax_identifier", + "description": "Unique identifier of the tax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTaxAuthority.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTaxAuthority.json new file mode 100644 index 00000000..bf13ceb6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTaxAuthority.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteTaxAuthority", + "fully_qualified_name": "ZohoBooksApi.DeleteTaxAuthority@0.1.0", + "description": "Delete a specific tax authority.\n\nUse this tool to delete a tax authority when you need its removal confirmed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to identify which one the tax authority belongs to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_authority_identifier", + "required": true, + "description": "The unique identifier for the tax authority to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax authority." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_authority_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_tax_authority'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxauthorities/{tax_authority_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_authority_id", + "tool_parameter_name": "tax_authority_identifier", + "description": "Unique identifier of the tax authority.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax authority." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTaxExemption.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTaxExemption.json new file mode 100644 index 00000000..2ad4332c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTaxExemption.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteTaxExemption", + "fully_qualified_name": "ZohoBooksApi.DeleteTaxExemption@0.1.0", + "description": "Delete a specific tax exemption from Zoho Books.\n\nUse this tool to delete a tax exemption in Zoho Books when you need to remove a specific exemption entry.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_exemption_identifier", + "required": true, + "description": "Unique identifier of the tax exemption to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax exemption." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_exemption_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_tax_exemption'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxexemptions/{tax_exemption_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_exemption_id", + "tool_parameter_name": "tax_exemption_identifier", + "description": "Unique identifier of the tax exemption.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax exemption." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTaxGroup.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTaxGroup.json new file mode 100644 index 00000000..2db60ba5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTaxGroup.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteTaxGroup", + "fully_qualified_name": "ZohoBooksApi.DeleteTaxGroup@0.1.0", + "description": "Delete a tax group if not associated with transactions.\n\nUse this tool to delete a tax group from Zoho Books. Note that tax groups associated with transactions cannot be deleted.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_group_identifier", + "required": true, + "description": "Unique identifier of the tax group to be deleted. Ensure it's not associated with active transactions to proceed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax group." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_group_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_tax_group'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxgroups/{tax_group_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_group_id", + "tool_parameter_name": "tax_group_identifier", + "description": "Unique identifier of the tax group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax group." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTimeEntries.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTimeEntries.json new file mode 100644 index 00000000..00bfc9eb --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTimeEntries.json @@ -0,0 +1,121 @@ +{ + "name": "DeleteTimeEntries", + "fully_qualified_name": "ZohoBooksApi.DeleteTimeEntries@0.1.0", + "description": "Delete time tracking entries from projects.\n\nUse this tool to delete time entries from projects in Zoho Books. It should be called when you need to remove specific time tracking records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization to identify which entity's time entries will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_time_entries'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/timeentries", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTransaction.json new file mode 100644 index 00000000..38ccd0ee --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteTransaction.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteTransaction", + "fully_qualified_name": "ZohoBooksApi.DeleteTransaction@0.1.0", + "description": "Delete a specified accounting transaction.\n\nThis tool is used to delete a specified transaction from the chart of accounts in Zoho Books. Call this tool when you need to remove a transaction permanently.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which the transaction will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "transaction_identifier", + "required": true, + "description": "Unique identifier for the transaction to be deleted in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_chart_of_account_transaction'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/chartofaccounts/transactions/{transaction_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "transaction_identifier", + "description": "Unique identifier of the transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the transaction." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorCredit.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorCredit.json new file mode 100644 index 00000000..3ee12dd5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorCredit.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteVendorCredit", + "fully_qualified_name": "ZohoBooksApi.DeleteVendorCredit@0.1.0", + "description": "Delete a vendor credit by its ID.\n\nUse this tool to delete a specific vendor credit using its unique ID. This is typically required when a vendor credit is no longer valid or was added by mistake.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's vendor credit to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier of the vendor credit to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_vendor_credit'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorCreditComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorCreditComment.json new file mode 100644 index 00000000..11f3f2e9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorCreditComment.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteVendorCreditComment", + "fully_qualified_name": "ZohoBooksApi.DeleteVendorCreditComment@0.1.0", + "description": "Delete a vendor credit comment in Zoho Books.\n\nUse this tool to delete a specific comment from a vendor credit in Zoho Books. This is useful when you need to manage or clean up vendor credit records by removing unnecessary or incorrect comments.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_id", + "required": true, + "description": "Unique identifier of the vendor credit to specify which comment to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "comment_id", + "required": true, + "description": "Unique identifier of the vendor credit comment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_vendor_credit_comment'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/comments/{comment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_id", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_id", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorCreditRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorCreditRefund.json new file mode 100644 index 00000000..b905ef26 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorCreditRefund.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteVendorCreditRefund", + "fully_qualified_name": "ZohoBooksApi.DeleteVendorCreditRefund@0.1.0", + "description": "Delete a vendor credit refund in Zoho Books.\n\nUse this tool to delete a specific vendor credit refund in Zoho Books when you have the vendor credit ID and refund ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization to which the vendor credit refund belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier for the vendor credit, required to delete the refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "vendor_credit_refund_id", + "required": true, + "description": "Unique identifier for the specific vendor credit refund you wish to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_refund_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_vendor_credit_refund'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds/{vendor_credit_refund_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_refund_id", + "tool_parameter_name": "vendor_credit_refund_id", + "description": "Unique identifier of the vendor credit refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit refund." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorPayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorPayment.json new file mode 100644 index 00000000..05993dec --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorPayment.json @@ -0,0 +1,154 @@ +{ + "name": "DeleteVendorPayment", + "fully_qualified_name": "ZohoBooksApi.DeleteVendorPayment@0.1.0", + "description": "Delete an existing vendor payment in Zoho Books.\n\nUse this tool to delete a specific vendor payment in Zoho Books when you have the payment ID and need to erase it from the records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the vendor payment is to be deleted. This is required to identify the correct organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_payment_id", + "required": true, + "description": "Unique identifier of the vendor payment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_vendor_payment'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "vendor_payment_id", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorPaymentRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorPaymentRefund.json new file mode 100644 index 00000000..f12653e9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DeleteVendorPaymentRefund.json @@ -0,0 +1,187 @@ +{ + "name": "DeleteVendorPaymentRefund", + "fully_qualified_name": "ZohoBooksApi.DeleteVendorPaymentRefund@0.1.0", + "description": "Delete a refund from an existing vendor payment.\n\nUse this tool to remove a specific refund associated with a vendor payment. It's useful when a refund needs to be retracted or corrected.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization to which the vendor payment refund belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_identifier", + "required": true, + "description": "Unique identifier of the payment to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "vendor_payment_refund_id", + "required": true, + "description": "Unique identifier of the vendor payment refund to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor payment refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendorpayment_refund_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_vendor_payment_refund'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds/{vendorpayment_refund_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_identifier", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendorpayment_refund_id", + "tool_parameter_name": "vendor_payment_refund_id", + "description": "Unique identifier of the vendor payment refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor payment refund." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DisableContactPaymentReminder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DisableContactPaymentReminder.json new file mode 100644 index 00000000..03901ef6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DisableContactPaymentReminder.json @@ -0,0 +1,154 @@ +{ + "name": "DisableContactPaymentReminder", + "fully_qualified_name": "ZohoBooksApi.DisableContactPaymentReminder@0.1.0", + "description": "Disable automated payment reminders for a contact.\n\nThis tool is used to disable automated payment reminders for a specific contact in Zoho Books. It should be called when you want to stop the system from sending payment reminders to a particular contact.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which payment reminders will be disabled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_unique_identifier", + "required": true, + "description": "Unique identifier of the contact to disable payment reminders for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'disable_contact_payment_reminder'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/paymentreminder/disable", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_unique_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/DisableInvoicePaymentReminder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DisableInvoicePaymentReminder.json new file mode 100644 index 00000000..806701c1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/DisableInvoicePaymentReminder.json @@ -0,0 +1,154 @@ +{ + "name": "DisableInvoicePaymentReminder", + "fully_qualified_name": "ZohoBooksApi.DisableInvoicePaymentReminder@0.1.0", + "description": "Disable automated payment reminders for an invoice.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's invoice reminders are being disabled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to disable payment reminders.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'disable_invoice_payment_reminder'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/paymentreminder/disable", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/EmailContactStatement.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailContactStatement.json new file mode 100644 index 00000000..e277a718 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailContactStatement.json @@ -0,0 +1,368 @@ +{ + "name": "EmailContactStatement", + "fully_qualified_name": "ZohoBooksApi.EmailContactStatement@0.1.0", + "description": "Sends an email statement to a specified contact.\n\nThis tool triggers an email statement to be sent to a specific contact using Zoho Books. If no JSON input is provided, the email will use default content. Use this tool when you need to send financial statements to clients or contacts.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to send the email statement to a specified contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_identifier", + "required": true, + "description": "Unique identifier of the contact to send the statement to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "statement_start_date", + "required": false, + "description": "The starting date for the statement in the format [yyyy-mm-dd]. If omitted, the current month will be used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If start_date and end_date are not given, current month's statement will be sent to contact. Date format [yyyy-mm-dd]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "start_date" + }, + { + "name": "statement_end_date", + "required": false, + "description": "End date for the statement in the format [yyyy-mm-dd]. If not provided, the current month's statement will be sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date for the statement. Date format [yyyy-mm-dd]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "end_date" + }, + { + "name": "attachment_files", + "required": false, + "description": "Files to be attached with the statement email, in multipart/form-data format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached along with the statement." + }, + "inferrable": true, + "http_endpoint_parameter_name": "multipart_or_formdata" + }, + { + "name": "email_request_body", + "required": false, + "description": "JSON object containing email details such as sender, recipients, subject, and body.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of an email has to be sent. Max-length [1000]" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of an email has to be sent. Max-length [5000]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_contact_statement'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/statements/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "start_date", + "tool_parameter_name": "statement_start_date", + "description": "If start_date and end_date are not given, current month's statement will be sent to contact. Date format [yyyy-mm-dd]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If start_date and end_date are not given, current month's statement will be sent to contact. Date format [yyyy-mm-dd]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "end_date", + "tool_parameter_name": "statement_end_date", + "description": "End date for the statement. Date format [yyyy-mm-dd]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date for the statement. Date format [yyyy-mm-dd]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "multipart_or_formdata", + "tool_parameter_name": "attachment_files", + "description": "Files to be attached along with the statement.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached along with the statement." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "email_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of an email has to be sent. Max-length [1000]" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of an email has to be sent. Max-length [5000]" + } + }, + "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 \"required\": [\n \"to_mail_ids\",\n \"subject\",\n \"body\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"send_from_org_email_id\": {\n \"description\": \"Boolean to trigger the email from the organization's email address\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"to_mail_ids\": {\n \"description\": \"Array of email address of the recipients.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"willsmith@bowmanfurniture.com\"\n ]\n },\n \"cc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be cced.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"peterparker@bowmanfurniture.com\"\n ]\n },\n \"subject\": {\n \"description\": \"Subject of an email has to be sent. Max-length [1000]\",\n \"type\": \"string\",\n \"example\": \"Statement of transactions with Zillium Inc\"\n },\n \"body\": {\n \"description\": \"Body of an email has to be sent. Max-length [5000]\",\n \"type\": \"string\",\n \"example\": \"Dear Customer,
We have attached with this email a list of all your transactions with us for the period 01 Sep 2013 to 30 Sep 2013. You can write to us or call us if you need any assistance or clarifications.
Thanks for your business.
Regards
Zillium Inc\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailCreditNote.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailCreditNote.json new file mode 100644 index 00000000..4134967e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailCreditNote.json @@ -0,0 +1,319 @@ +{ + "name": "EmailCreditNote", + "fully_qualified_name": "ZohoBooksApi.EmailCreditNote@0.1.0", + "description": "Send a credit note via email.\n\nUse this tool to email a credit note to the intended recipient. It's useful for sending invoice adjustments to clients.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization for which the credit note is being emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to be emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "customer_id_for_credit_note", + "required": false, + "description": "Customer ID for whom the credit note is raised. Used to identify the recipient of the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the credit note is raised." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "email_attachments", + "required": false, + "description": "The file paths or URLs of files to attach to the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The files to be attached with the email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachments" + }, + { + "name": "email_content", + "required": false, + "description": "Details of the email including recipients, subject, and body. Contains 'to_mail_ids' (list of recipient emails), 'cc_mail_ids' (list of CC emails), 'subject' (string up to 1000 chars), and 'body' (string up to 5000 chars).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email IDs to which the credit note is to be mailed." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email IDs that have to be copied when the credit note is to be mailed." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject of the email. Max-length [1000]" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The body of the email. Max-length [5000]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_credit_note'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "customer_id_for_credit_note", + "description": "Customer ID of the customer for whom the credit note is raised.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the credit note is raised." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachments", + "tool_parameter_name": "email_attachments", + "description": "The files to be attached with the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The files to be attached with the email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "email_content", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email IDs to which the credit note is to be mailed." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email IDs that have to be copied when the credit note is to be mailed." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject of the email. Max-length [1000]" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The body of the email. Max-length [5000]" + } + }, + "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 \"required\": [\n \"to_mail_ids\",\n \"subject\",\n \"body\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"to_mail_ids\": {\n \"description\": \"The email IDs to which the credit note is to be mailed.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"benjamin.george@bowmanfurniture.com\",\n \"paul@bowmanfurniture.com\"\n ]\n },\n \"cc_mail_ids\": {\n \"description\": \"The email IDs that have to be copied when the credit note is to be mailed.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"accounts@bowmanfurniture.com\"\n ]\n },\n \"subject\": {\n \"description\": \"The subject of the email. Max-length [1000]\",\n \"type\": \"string\",\n \"example\": \"Credit note for subscription.\"\n },\n \"body\": {\n \"description\": \"The body of the email. Max-length [5000]\",\n \"type\": \"string\",\n \"example\": \"Please find attached the credit note for your subscription.\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailRetainerInvoiceToCustomer.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailRetainerInvoiceToCustomer.json new file mode 100644 index 00000000..af1ae76d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailRetainerInvoiceToCustomer.json @@ -0,0 +1,368 @@ +{ + "name": "EmailRetainerInvoiceToCustomer", + "fully_qualified_name": "ZohoBooksApi.EmailRetainerInvoiceToCustomer@0.1.0", + "description": "Send a retainer invoice to a customer via email.\n\nThis tool emails a retainer invoice to the specified customer. If no custom content is provided, the email will use the default content.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "The unique identifier of the retainer invoice to be emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + }, + { + "name": "email_attachments", + "required": false, + "description": "List of file paths or URLs for files to attach to the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachments" + }, + { + "name": "custom_email_request_body", + "required": false, + "description": "Optional JSON object to customize the email. Includes fields like 'send_from_org_email_id', 'to_mail_ids', 'cc_mail_ids', 'subject', and 'body'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject of the mail" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The body of the mail" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "send_customer_statement", + "required": false, + "description": "Set to true to send the customer statement PDF with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send customer statement pdf a with email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send_customer_statement" + }, + { + "name": "attach_invoice_to_email", + "required": false, + "description": "Attach the retainer invoice to the email if true. Accepts a boolean value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the retainer invoice attachment a with the email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send_attachment" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_retainer_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send_customer_statement", + "tool_parameter_name": "send_customer_statement", + "description": "Send customer statement pdf a with email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send customer statement pdf a with email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send_attachment", + "tool_parameter_name": "attach_invoice_to_email", + "description": "Send the retainer invoice attachment a with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the retainer invoice attachment a with the email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachments", + "tool_parameter_name": "email_attachments", + "description": "Files to be attached to the email", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_email_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject of the mail" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The body of the mail" + } + }, + "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 \"required\": [\n \"to_mail_ids\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"send_from_org_email_id\": {\n \"description\": \"Boolean to trigger the email from the organization's email address\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"to_mail_ids\": {\n \"description\": \"Array of email address of the recipients.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"willsmith@bowmanfurniture.com\"\n ]\n },\n \"cc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be cced.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"peterparker@bowmanfurniture.com\"\n ]\n },\n \"subject\": {\n \"description\": \"The subject of the mail\",\n \"type\": \"string\",\n \"example\": \"Retainer Invoice from Zillium Inc (Retainer Invoice#: RET-00001)\"\n },\n \"body\": {\n \"description\": \"The body of the mail\",\n \"type\": \"string\",\n \"example\": \"Dear Customer,



Thanks for your business.



The retainer invoice RET-00001 is attached with this email. You can choose the easy way out and pay online for this invoice.

Here's an overview of the invoice for your reference.



Invoice Overview:

Invoice : INV-00001

Date : 05 Aug 2013

Amount : $541.82



It was great working with you. Looking forward to working with you again.


\\\\nRegards
\\\\nZillium Inc
\\\\n\\\",\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailSalesOrderToCustomer.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailSalesOrderToCustomer.json new file mode 100644 index 00000000..ed8ac6c9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailSalesOrderToCustomer.json @@ -0,0 +1,465 @@ +{ + "name": "EmailSalesOrderToCustomer", + "fully_qualified_name": "ZohoBooksApi.EmailSalesOrderToCustomer@0.1.0", + "description": "Email a sales order to a customer.\n\nSend an email containing the sales order to the customer, with optional custom content. If no content is provided, the default email content will be used.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the sales order is being emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Provide the unique identifier of the sales order to be emailed to the customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "sales_order_identifier", + "required": true, + "description": "Unique identifier of the sales order to be emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "sales_order_attachments", + "required": false, + "description": "A list of file paths or URLs for attachments to include with the sales order email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attachments of the Sales Order" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachments" + }, + { + "name": "file_name", + "required": false, + "description": "Specify the name of the file to be attached to the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file." + }, + "inferrable": true, + "http_endpoint_parameter_name": "file_name" + }, + { + "name": "email_request_body", + "required": false, + "description": "JSON string containing email details such as from address, recipients, subject, and body for the sales order email.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "From Address of the Email Address" + }, + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address." + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be CC ed." + }, + "bcc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be BCC ed." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of the mail." + }, + "documents": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Documents of the Sales Order" + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the invoice" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of the mail." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "include_sales_order_attachment", + "required": false, + "description": "Specify true to include the sales order attachment in the email, or false to exclude it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the sales order attachment a with the email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send_attachment" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_sales_order'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_identifier", + "description": "ID of the Sales Order", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Sales Order" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachments", + "tool_parameter_name": "sales_order_attachments", + "description": "Attachments of the Sales Order", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attachments of the Sales Order" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send_attachment", + "tool_parameter_name": "include_sales_order_attachment", + "description": "Send the sales order attachment a with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the sales order attachment a with the email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "file_name", + "tool_parameter_name": "file_name", + "description": "Name of the file.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_identifier", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "email_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "From Address of the Email Address" + }, + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address." + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be CC ed." + }, + "bcc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be BCC ed." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of the mail." + }, + "documents": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Documents of the Sales Order" + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the invoice" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of the mail." + } + }, + "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 \"required\": [\n \"to_mail_ids\",\n \"subject\",\n \"body\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"from_address_id\": {\n \"description\": \"From Address of the Email Address\",\n \"type\": \"string\",\n \"example\": \"johnRoberts@safInstrument.com\"\n },\n \"send_from_org_email_id\": {\n \"description\": \"Boolean to trigger the email from the organization's email address.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"to_mail_ids\": {\n \"description\": \"Array of email address of the recipients.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"john@safInstruments.com\"\n ]\n },\n \"cc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be CC ed.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"smith@safInstruments.com\"\n ]\n },\n \"bcc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be BCC ed.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"mark@safInstruments.com\"\n ]\n },\n \"subject\": {\n \"description\": \"Subject of the mail.\",\n \"type\": \"string\",\n \"example\": \"Sales Order from Zillium Inc (Sales Order #: SO-00001)\"\n },\n \"documents\": {\n \"description\": \"Documents of the Sales Order\",\n \"type\": \"string\",\n \"format\": \"binary\"\n },\n \"invoice_id\": {\n \"description\": \"ID of the invoice\",\n \"type\": \"string\",\n \"example\": 460000000028192\n },\n \"body\": {\n \"description\": \"Body of the mail.\",\n \"type\": \"string\",\n \"example\": \"
Dear SAF Instruments Inc, 

Thanks for your interest in our services. Please find our sales order attached with this mail.

An overview of the sales order is available below for your reference:  

----------------------------------------------------------------------------------------

Sales Order # : SO-00001


----------------------------------------------------------------------------------------
 Order Date      :  28 Jul 2014
 Amount           :   $12,400.00
----------------------------------------------------------------------------------------

Assuring you of our best services at all times.


Regards,

John
Zillium Inc


\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailSalesReceiptToCustomer.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailSalesReceiptToCustomer.json new file mode 100644 index 00000000..403280d1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EmailSalesReceiptToCustomer.json @@ -0,0 +1,237 @@ +{ + "name": "EmailSalesReceiptToCustomer", + "fully_qualified_name": "ZohoBooksApi.EmailSalesReceiptToCustomer@0.1.0", + "description": "Email a sales receipt to the customer.\n\nUse this tool to send a sales receipt via email to a specific customer. It should be called when you need to deliver the sales receipt directly to the customer.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "sales_receipt_identifier", + "required": true, + "description": "The unique identifier of the sales receipt to be emailed to the customer. It must be a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sales_receipt_id" + }, + { + "name": "email_request_body", + "required": false, + "description": "JSON containing 'to_mail_ids', 'subject', and 'body' for the email. Includes recipients' email addresses, email subject, and body content.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email addresses of the recipients" + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of the mail" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of the mail" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "attach_pdf", + "required": false, + "description": "Set to true to send the sales receipt PDF with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the sales receipt pdf with the email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "attach_pdf" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_sales_receipt'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesreceipts/{sales_receipt_id}/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "attach_pdf", + "tool_parameter_name": "attach_pdf", + "description": "Send the sales receipt pdf with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the sales receipt pdf with the email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sales_receipt_id", + "tool_parameter_name": "sales_receipt_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": "email_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email addresses of the recipients" + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of the mail" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of the mail" + } + }, + "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 \"required\": [\n \"to_mail_ids\",\n \"subject\",\n \"body\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"to_mail_ids\": {\n \"description\": \"Array of email addresses of the recipients\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"john@safinstruments.com\"\n ]\n },\n \"subject\": {\n \"description\": \"Subject of the mail\",\n \"type\": \"string\",\n \"example\": \"Sales Receipt from Zillium Inc\"\n },\n \"body\": {\n \"description\": \"Body of the mail\",\n \"type\": \"string\",\n \"example\": \"Please find the sales receipt attached.\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EnableContactPortalAccess.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EnableContactPortalAccess.json new file mode 100644 index 00000000..b5d281be --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EnableContactPortalAccess.json @@ -0,0 +1,223 @@ +{ + "name": "EnableContactPortalAccess", + "fully_qualified_name": "ZohoBooksApi.EnableContactPortalAccess@0.1.0", + "description": "Enable portal access for a specified contact in Zoho Books.\n\nUse this tool to enable portal access for a contact in Zoho Books, allowing them to interact with their account through the portal.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization within Zoho Books, required to enable portal access for a contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_unique_id", + "required": true, + "description": "Unique identifier for the specific contact whose portal access is to be enabled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "contact_person_details", + "required": false, + "description": "JSON object containing details of contact persons to enable portal access, including their unique IDs.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_persons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the contact person. System-generated ID for API operations." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'enable_contact_portal'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/portal/enable", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_unique_id", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "contact_person_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_persons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the contact person. System-generated ID for API operations." + } + }, + "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 \"required\": [\n \"contact_persons\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"contact_persons\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique identifier for the contact person. System-generated ID for API operations.\",\n \"type\": \"string\",\n \"example\": 460000000026051\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EnableOrganizationLocations.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EnableOrganizationLocations.json new file mode 100644 index 00000000..130f1742 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EnableOrganizationLocations.json @@ -0,0 +1,121 @@ +{ + "name": "EnableOrganizationLocations", + "fully_qualified_name": "ZohoBooksApi.EnableOrganizationLocations@0.1.0", + "description": "Enable locations for an organization in Zoho Books.\n\nUse this tool to enable location settings for an organization in Zoho Books, allowing tracking and management of different locations within the company's account.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization for which to enable location tracking.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'enable_locations'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/locations/enable", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/EnablePaymentReminder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EnablePaymentReminder.json new file mode 100644 index 00000000..c2f13f11 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/EnablePaymentReminder.json @@ -0,0 +1,154 @@ +{ + "name": "EnablePaymentReminder", + "fully_qualified_name": "ZohoBooksApi.EnablePaymentReminder@0.1.0", + "description": "Enable automated payment reminders for a contact.\n\nThis tool is used to enable automated payment reminders for a specific contact, improving timely payment handling.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the unique ID of the organization for which to enable payment reminders.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_unique_identifier", + "required": true, + "description": "Unique identifier of the contact for whom the payment reminder is enabled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'enable_contact_payment_reminder'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/paymentreminder/enable", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_unique_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ExcludeBankTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExcludeBankTransaction.json new file mode 100644 index 00000000..3e9c0922 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExcludeBankTransaction.json @@ -0,0 +1,187 @@ +{ + "name": "ExcludeBankTransaction", + "fully_qualified_name": "ZohoBooksApi.ExcludeBankTransaction@0.1.0", + "description": "Exclude a transaction from a bank or credit card account.\n\nUse this tool to exclude a specific transaction from your bank or credit card account records. Ideal for removing unwanted or incorrect entries.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to which the transaction belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "transaction_id", + "required": true, + "description": "Unique identifier of the bank transaction to be excluded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "account_id_for_transaction_exclusion", + "required": false, + "description": "The ID of the account from which a transaction will be excluded. This is a mandatory field.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'exclude_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/exclude", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_id_for_transaction_exclusion", + "description": "Mandatory Account id for which transactions are to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ExportAndPrintEstimates.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportAndPrintEstimates.json new file mode 100644 index 00000000..ed6803ae --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportAndPrintEstimates.json @@ -0,0 +1,154 @@ +{ + "name": "ExportAndPrintEstimates", + "fully_qualified_name": "ZohoBooksApi.ExportAndPrintEstimates@0.1.0", + "description": "Export and print estimates as a PDF file.\n\nUse this tool to export up to 25 estimates as a PDF file and prepare them for printing.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization whose estimates are to be exported and printed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_ids_to_export", + "required": true, + "description": "Comma-separated list of estimate IDs to export and print. Maximum of 25 IDs allowed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated estimate ids which are to be emailed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_ids" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_print_estimates'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/print", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_ids", + "tool_parameter_name": "estimate_ids_to_export", + "description": "Comma separated estimate ids which are to be emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated estimate ids which are to be emailed." + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/ExportAndPrintInvoices.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportAndPrintInvoices.json new file mode 100644 index 00000000..9ce38ca9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportAndPrintInvoices.json @@ -0,0 +1,154 @@ +{ + "name": "ExportAndPrintInvoices", + "fully_qualified_name": "ZohoBooksApi.ExportAndPrintInvoices@0.1.0", + "description": "Export and print multiple invoices as PDFs.\n\nUse this tool to export and print up to 25 invoices at a time in PDF format.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's invoices to print.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifiers", + "required": true, + "description": "A comma-separated string of up to 25 invoice IDs to export and print as PDFs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Export invoices as pdf and print them. Maximum of 25 invoices can be printed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_ids" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_print_invoices'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/print", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_ids", + "tool_parameter_name": "invoice_identifiers", + "description": "Export invoices as pdf and print them. Maximum of 25 invoices can be printed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Export invoices as pdf and print them. Maximum of 25 invoices can be printed." + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/ExportEstimatesAsPdf.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportEstimatesAsPdf.json new file mode 100644 index 00000000..89da8505 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportEstimatesAsPdf.json @@ -0,0 +1,154 @@ +{ + "name": "ExportEstimatesAsPdf", + "fully_qualified_name": "ZohoBooksApi.ExportEstimatesAsPdf@0.1.0", + "description": "Export up to 25 estimates as a single PDF document.\n\nUse this tool to export multiple estimates (up to 25) in one consolidated PDF document. Ideal for compiling estimates quickly into a single file for review or sharing.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required to specify which organization's estimates are to be exported.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_ids", + "required": true, + "description": "Comma-separated list of estimate IDs to include in the PDF. Maximum of 25 IDs allowed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated estimate ids which are to be emailed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_ids" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_export_estimates_as_pdf'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/pdf", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_ids", + "tool_parameter_name": "estimate_ids", + "description": "Comma separated estimate ids which are to be emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated estimate ids which are to be emailed." + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/ExportInvoicesAsPdf.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportInvoicesAsPdf.json new file mode 100644 index 00000000..adbcac2d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportInvoicesAsPdf.json @@ -0,0 +1,154 @@ +{ + "name": "ExportInvoicesAsPdf", + "fully_qualified_name": "ZohoBooksApi.ExportInvoicesAsPdf@0.1.0", + "description": "Export up to 25 invoices as a single PDF file.\n\nUse this tool to export multiple invoices into a single PDF document. Ideal for consolidating up to 25 invoices in one file.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization for which invoices are being exported.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_ids", + "required": true, + "description": "Comma-separated list of invoice IDs to export as a PDF. Maximum of 25 IDs allowed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated invoice ids which are to be export as pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_ids" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_export_invoices_as_pdf'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/pdf", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_ids", + "tool_parameter_name": "invoice_ids", + "description": "Comma separated invoice ids which are to be export as pdf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated invoice ids which are to be export as pdf." + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/ExportPrintSalesOrders.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportPrintSalesOrders.json new file mode 100644 index 00000000..2ed712b7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportPrintSalesOrders.json @@ -0,0 +1,121 @@ +{ + "name": "ExportPrintSalesOrders", + "fully_qualified_name": "ZohoBooksApi.ExportPrintSalesOrders@0.1.0", + "description": "Export and print sales orders as PDFs.\n\nExports up to 25 sales orders as PDF files for printing. This tool is used to generate printable documents of sales orders in batch format.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization whose sales orders you want to export and print as PDFs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_print_sales_orders'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/print", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/ExportSalesOrdersPdf.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportSalesOrdersPdf.json new file mode 100644 index 00000000..098788a1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ExportSalesOrdersPdf.json @@ -0,0 +1,121 @@ +{ + "name": "ExportSalesOrdersPdf", + "fully_qualified_name": "ZohoBooksApi.ExportSalesOrdersPdf@0.1.0", + "description": "Export sales orders as a single PDF document.\n\nUse this tool to export up to 25 sales orders into a single PDF file from Zoho Books. It is useful for generating and retrieving sales documentation in bulk for reporting or archiving.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose sales orders will be exported as a PDF. This ID is required to access and retrieve the sales order data from Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_export_sales_orders_as_pdf'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/pdf", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/FetchAssetHistory.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchAssetHistory.json new file mode 100644 index 00000000..5746bfe2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchAssetHistory.json @@ -0,0 +1,220 @@ +{ + "name": "FetchAssetHistory", + "fully_qualified_name": "ZohoBooksApi.FetchAssetHistory@0.1.0", + "description": "Fetch the detailed history of a specific fixed asset.\n\nThis tool retrieves a comprehensive history of a fixed asset, detailing its journey from acquisition to write-off. It should be called when you need insights into a fixed asset's lifecycle.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose asset history is being requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier for the fixed asset. Required to fetch its detailed history.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + }, + { + "name": "page_number", + "required": false, + "description": "Page number to retrieve, with a default value of 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Defaults to 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_fixed_asset_history'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/history", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/FetchBankAccountRules.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchBankAccountRules.json new file mode 100644 index 00000000..efc8ec2b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchBankAccountRules.json @@ -0,0 +1,154 @@ +{ + "name": "FetchBankAccountRules", + "fully_qualified_name": "ZohoBooksApi.FetchBankAccountRules@0.1.0", + "description": "Fetch rules for a specified bank account.\n\nThis tool fetches all the rules created for a given bank or credit card account ID. It's used to retrieve details about transaction rules associated with a specific account.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. This ID is necessary to fetch the rules linked with the specified bank or credit card account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_id", + "required": true, + "description": "ID of the bank or credit card account to fetch rules for.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bank Account" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_bank_account_rules'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/rules", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "bank_account_id", + "description": "ID of the Bank Account", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bank Account" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/FetchBankTransactionDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchBankTransactionDetails.json new file mode 100644 index 00000000..826657ef --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchBankTransactionDetails.json @@ -0,0 +1,154 @@ +{ + "name": "FetchBankTransactionDetails", + "fully_qualified_name": "ZohoBooksApi.FetchBankTransactionDetails@0.1.0", + "description": "Fetch details of a specific bank transaction by ID.\n\nUse this tool to retrieve detailed information about a bank transaction by providing its transaction ID. This is useful for accessing specific transaction records in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the bank transaction details need to be fetched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "Unique identifier for the bank transaction to fetch its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bank_transaction_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/{bank_transaction_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bank_transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/FetchEmployeeDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchEmployeeDetails.json new file mode 100644 index 00000000..cdf2d630 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchEmployeeDetails.json @@ -0,0 +1,154 @@ +{ + "name": "FetchEmployeeDetails", + "fully_qualified_name": "ZohoBooksApi.FetchEmployeeDetails@0.1.0", + "description": "Retrieve detailed information about an employee.\n\nThis tool is used to obtain comprehensive details of a specific employee by their ID in Zoho Books. It should be called when detailed employee information is needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. This ID is necessary to specify which organization's employee details are being requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "employee_unique_id", + "required": true, + "description": "The unique identifier for the employee whose details are to be fetched in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "employee_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_employee'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/employees/{employee_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "employee_id", + "tool_parameter_name": "employee_unique_id", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/FetchVendorCreditRefunds.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchVendorCreditRefunds.json new file mode 100644 index 00000000..0849c4bc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchVendorCreditRefunds.json @@ -0,0 +1,286 @@ +{ + "name": "FetchVendorCreditRefunds", + "fully_qualified_name": "ZohoBooksApi.FetchVendorCreditRefunds@0.1.0", + "description": "Retrieve a paginated list of vendor credit refunds.\n\nUse this tool to obtain detailed information about vendor credit refunds, useful for financial reconciliation and tracking vendor transactions. This tool supports pagination.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization for which to list vendor credit refunds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "search_vendor_credits_by_customer_id", + "required": false, + "description": "Search for vendor credits linked to a specific customer using their ID.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search vendor credits by vendor credit customer ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "vendor_credit_last_modified_time", + "required": false, + "description": "Search vendor credits using the last modified time as a filter. This expects a date-time string, typically in ISO 8601 format, to narrow down results by when they were last modified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search vendor credits by vendor credit last modfified time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "sort_vendor_credits_by_column", + "required": false, + "description": "Specify the column to sort vendor credits by. Allowed values: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time, reference_number.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort vendor credits by following columns vendor_name, vendorcredit_number, balance, total, date and created_time. Allowed Values: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time and reference_number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "pagination_page_number", + "required": false, + "description": "Specify the page number of results to retrieve for pagination. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of vendor credits to return per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many vendor credits are returned in each page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_vendor_credit_refunds1'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/refunds", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "search_vendor_credits_by_customer_id", + "description": "Search vendor credits by vendor credit customer ID", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search vendor credits by vendor credit customer ID" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "vendor_credit_last_modified_time", + "description": "Search vendor credits by vendor credit last modfified time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search vendor credits by vendor credit last modfified time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_vendor_credits_by_column", + "description": "Sort vendor credits by following columns vendor_name, vendorcredit_number, balance, total, date and created_time. Allowed Values: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time and reference_number.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort vendor credits by following columns vendor_name, vendorcredit_number, balance, total, date and created_time. Allowed Values: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time and reference_number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "pagination_page_number", + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records per page for pagination. Controls how many vendor credits are returned in each page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many vendor credits are returned in each page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/FetchVendorPaymentDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchVendorPaymentDetails.json new file mode 100644 index 00000000..946512aa --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FetchVendorPaymentDetails.json @@ -0,0 +1,286 @@ +{ + "name": "FetchVendorPaymentDetails", + "fully_qualified_name": "ZohoBooksApi.FetchVendorPaymentDetails@0.1.0", + "description": "Retrieve details of a vendor payment by payment ID.\n\nCall this tool to get detailed information about a specific vendor payment using the payment ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to retrieve the vendor payment details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_identifier", + "required": true, + "description": "Unique identifier for the payment to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "include_tax_information", + "required": false, + "description": "Set to true to fetch tax information for the vendor payment.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if tax information should be fetched" + }, + "inferrable": true, + "http_endpoint_parameter_name": "fetchTaxInfo" + }, + { + "name": "fetch_statement_line_info", + "required": false, + "description": "Set to true to fetch statement line information for the vendor payment.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check is Statement Line Information for Vendor Payment be fetched" + }, + "inferrable": true, + "http_endpoint_parameter_name": "fetchstatementlineinfo" + }, + { + "name": "print_payment", + "required": false, + "description": "Specify true to print the Vendor Payment details.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Vendor Payment must be printed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + }, + { + "name": "is_bill_payment_id", + "required": false, + "description": "True if the ID is for a Bill Payment, false for a Vendor Payment.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the ID is Bill Payment or Vendor Payment" + }, + "inferrable": true, + "http_endpoint_parameter_name": "is_bill_payment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_vendor_payment'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fetchTaxInfo", + "tool_parameter_name": "include_tax_information", + "description": "Check if tax information should be fetched", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if tax information should be fetched" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fetchstatementlineinfo", + "tool_parameter_name": "fetch_statement_line_info", + "description": "Check is Statement Line Information for Vendor Payment be fetched", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check is Statement Line Information for Vendor Payment be fetched" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "print_payment", + "description": "Check if Vendor Payment must be printed.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Vendor Payment must be printed." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "is_bill_payment_id", + "tool_parameter_name": "is_bill_payment_id", + "description": "Check if the ID is Bill Payment or Vendor Payment", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the ID is Bill Payment or Vendor Payment" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_identifier", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/FindMatchingBankTransactions.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FindMatchingBankTransactions.json new file mode 100644 index 00000000..a7afca0d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/FindMatchingBankTransactions.json @@ -0,0 +1,517 @@ +{ + "name": "FindMatchingBankTransactions", + "fully_qualified_name": "ZohoBooksApi.FindMatchingBankTransactions@0.1.0", + "description": "Find matching uncategorized bank transactions.\n\nThis tool retrieves a list of uncategorized bank transactions that match specified criteria. It can also handle invoices, bills, and credit notes by recording and matching new payment or refund transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to search transactions for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "transaction_id", + "required": true, + "description": "Unique identifier for the bank transaction to search for matching entries.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "Unique identifier of the bank transaction to be matched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "transaction_type", + "required": false, + "description": "Specify the type of transaction. Allowed values: deposit, refund, transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return. Note: Some types are module-specific and cannot be created under this endpoint.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_type" + }, + { + "name": "filter_date_after", + "required": false, + "description": "Specify the date after which transactions should be filtered. Use YYYY-MM-DD format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date after which Transactions are to be filtered" + }, + "inferrable": true, + "http_endpoint_parameter_name": "date_after" + }, + { + "name": "filter_date_before", + "required": false, + "description": "Specify a date in YYYY-MM-DD format. Transactions before this date will be filtered.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date before which Transactions are to be filtered" + }, + "inferrable": true, + "http_endpoint_parameter_name": "date_before" + }, + { + "name": "minimum_transaction_amount", + "required": false, + "description": "Minimum amount to filter transactions. Only transactions equal to or greater than this amount are included.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Starting amout with which transactions are to be filtered" + }, + "inferrable": true, + "http_endpoint_parameter_name": "amount_start" + }, + { + "name": "maximum_transaction_amount", + "required": false, + "description": "Maximum amount for filtering transactions. Only transactions with an amount less than or equal to this value will be included.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Starting amout with which transactions are to be filtered" + }, + "inferrable": true, + "http_endpoint_parameter_name": "amount_end" + }, + { + "name": "transaction_contact_name", + "required": false, + "description": "Name of the contact person involved in the transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact person name, involved in the transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact" + }, + { + "name": "transaction_reference_number", + "required": false, + "description": "Reference number of the transaction to filter matching records.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "Page number to fetch. Default is 1, used for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to be fetched per page. The default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + }, + { + "name": "show_all_transactions", + "required": false, + "description": "Set to true to display all transactions without applying filters; false to filter transactions.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if all transactions must be shown" + }, + "inferrable": true, + "http_endpoint_parameter_name": "show_all_transactions" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_matching_bank_transactions'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/match", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "ID of the Transaction", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Transaction" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_type", + "tool_parameter_name": "transaction_type", + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date_after", + "tool_parameter_name": "filter_date_after", + "description": "Date after which Transactions are to be filtered", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date after which Transactions are to be filtered" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date_before", + "tool_parameter_name": "filter_date_before", + "description": "Date before which Transactions are to be filtered", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date before which Transactions are to be filtered" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "amount_start", + "tool_parameter_name": "minimum_transaction_amount", + "description": "Starting amout with which transactions are to be filtered", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Starting amout with which transactions are to be filtered" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "amount_end", + "tool_parameter_name": "maximum_transaction_amount", + "description": "Starting amout with which transactions are to be filtered", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Starting amout with which transactions are to be filtered" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact", + "tool_parameter_name": "transaction_contact_name", + "description": "Contact person name, involved in the transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact person name, involved in the transaction." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "transaction_reference_number", + "description": "Reference Number of the transaction", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "show_all_transactions", + "tool_parameter_name": "show_all_transactions", + "description": "Check if all transactions must be shown", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if all transactions must be shown" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GenerateInvoicePaymentLink.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GenerateInvoicePaymentLink.json new file mode 100644 index 00000000..5bd1fa24 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GenerateInvoicePaymentLink.json @@ -0,0 +1,253 @@ +{ + "name": "GenerateInvoicePaymentLink", + "fully_qualified_name": "ZohoBooksApi.GenerateInvoicePaymentLink@0.1.0", + "description": "Generate a payment link for an invoice with expiry.\n\nUse this tool to generate a unique payment link for a specified invoice, including setting an expiry date for the link.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "Specify the organization's unique ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_transaction_id", + "required": true, + "description": "The unique ID of the transaction or invoice for which the payment link is generated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the transaction (Invoice ID)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "transaction_type", + "required": true, + "description": "Specifies the type of transaction, typically 'Invoice'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the transaction (Invoice)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_type" + }, + { + "name": "link_type", + "required": true, + "description": "Specifies whether the payment link is Private or Public.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the link (Private or Public)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "link_type" + }, + { + "name": "payment_link_expiry_date", + "required": true, + "description": "The date when the payment link should expire. Use format: yyyy-MM-dd.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expiry time of the payment link. Supported format : yyyy-MM-dd" + }, + "inferrable": true, + "http_endpoint_parameter_name": "expiry_time" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'generate_invoice_payment_link'.", + "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": [ + "ZohoBooks.settings.ALL" + ] + } + }, + "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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/share/paymentlink", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "invoice_transaction_id", + "description": "The ID of the transaction (Invoice ID).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the transaction (Invoice ID)." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_type", + "tool_parameter_name": "transaction_type", + "description": "The type of the transaction (Invoice).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the transaction (Invoice)." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "link_type", + "tool_parameter_name": "link_type", + "description": "The type of the link (Private or Public).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the link (Private or Public)." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expiry_time", + "tool_parameter_name": "payment_link_expiry_date", + "description": "The expiry time of the payment link. Supported format : yyyy-MM-dd", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expiry time of the payment link. Supported format : yyyy-MM-dd" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetAccountDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetAccountDetails.json new file mode 100644 index 00000000..b734179f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetAccountDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetAccountDetails", + "fully_qualified_name": "ZohoBooksApi.GetAccountDetails@0.1.0", + "description": "Retrieve detailed information for a specified account.\n\nThis tool is used to obtain detailed information about a specific account from the chart of accounts. It should be called when you need to access account specifics such as account name, type, and other related details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to which the account belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_unique_id", + "required": true, + "description": "Unique identifier for the account details request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_chart_of_account'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/chartofaccounts/{account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_unique_id", + "description": "Unique identifier of the account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetAssetDepreciationSummary.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetAssetDepreciationSummary.json new file mode 100644 index 00000000..5112de5e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetAssetDepreciationSummary.json @@ -0,0 +1,154 @@ +{ + "name": "GetAssetDepreciationSummary", + "fully_qualified_name": "ZohoBooksApi.GetAssetDepreciationSummary@0.1.0", + "description": "Displays detailed future depreciation rates for a fixed asset.\n\nUse this tool to obtain a summary of an asset's future depreciation rates. It is helpful for financial forecasting and decision-making regarding fixed assets.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization for which the asset's future depreciation rates are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier for the fixed asset to fetch its future depreciation rates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_fixed_asset_forecast'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/forecast", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetBankAccountDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBankAccountDetails.json new file mode 100644 index 00000000..2c1f3c5d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBankAccountDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetBankAccountDetails", + "fully_qualified_name": "ZohoBooksApi.GetBankAccountDetails@0.1.0", + "description": "Retrieve detailed information of a specified bank account.\n\nCall this tool to get a comprehensive view of a bank account by specifying its account ID. Useful for accessing detailed account data within Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID for the organization. Required to specify which organization's data to access.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_id", + "required": true, + "description": "Unique identifier used to specify the bank account for detailed retrieval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_bank_account'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/{account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "bank_account_id", + "description": "Unique identifier of the bank account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetBankAccountRuleDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBankAccountRuleDetails.json new file mode 100644 index 00000000..74476e60 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBankAccountRuleDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetBankAccountRuleDetails", + "fully_qualified_name": "ZohoBooksApi.GetBankAccountRuleDetails@0.1.0", + "description": "Retrieve details of a specific bank account rule.\n\nCall this tool to get information about a specific rule in a bank account using its rule ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which to retrieve the bank account rule details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_rule_id", + "required": true, + "description": "Unique identifier of the bank account rule to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_bank_account_rule'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/rules/{rule_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rule_id", + "tool_parameter_name": "bank_account_rule_id", + "description": "Unique identifier of the bank account rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account rule." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetBankTransactions.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBankTransactions.json new file mode 100644 index 00000000..b5416177 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBankTransactions.json @@ -0,0 +1,517 @@ +{ + "name": "GetBankTransactions", + "fully_qualified_name": "ZohoBooksApi.GetBankTransactions@0.1.0", + "description": "Retrieve all transaction details for a bank account.\n\nUse this tool to obtain detailed information about all transactions involved in a specific bank account. It is helpful for financial analysis and record-keeping.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "A unique ID representing the organization for which transactions are being queried. This is required to specify the context of the request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_id", + "required": false, + "description": "Unique identifier for the bank account to retrieve transactions for.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "transaction_type_filter", + "required": false, + "description": "Specify the type of transactions to retrieve. Expected as a string, e.g., 'expense', 'income'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_type" + }, + { + "name": "transaction_date_range", + "required": false, + "description": "Specify the start and end date for the transaction date range. Use 'date_start' for the start and 'date_end' for the end date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end date, to provide a range within which the transaction date exist. Variants: date_start and date_end" + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "transaction_amount_range", + "required": false, + "description": "Set a range of transaction amounts to filter transactions. Use two numbers: start amount, end amount.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end amount, to provide a range within which the transaction amount exist. Variants: amount_start and amount_end" + }, + "inferrable": true, + "http_endpoint_parameter_name": "amount" + }, + { + "name": "transaction_status_list_view", + "required": false, + "description": "Filter transactions by status: all, uncategorized, manually_added, matched, excluded, categorized.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction status wise list view - All, uncategorized, manually_added, matched, excluded, categorized" + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "transaction_reference_number", + "required": false, + "description": "Search for a transaction using its reference number for more precise results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search using Reference Number of the transaction" + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "transaction_filter_type", + "required": false, + "description": "Filter transactions by type: Status.All, Status.Uncategorized, Status.Categorized, Status.ManuallyAdded, Status.Excluded, Status.Matched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters the transactions based on the allowed types. Allowed Values: Status.All, Status.Uncategorized, Status.Categorized, Status.ManuallyAdded, Status.Excluded and Status.Matched." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "sort_transactions_by", + "required": false, + "description": "Specify how to sort transactions. Allowed value: 'date'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sorts the transactions based on the allowed sort types. Allowed Values: date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "transaction_status_filter", + "required": false, + "description": "Filter transactions by status: All, uncategorized, manually_added, matched, excluded, categorized.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction status wise list view - All, uncategorized, manually_added, matched, excluded, categorized" + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_status" + }, + { + "name": "search_transactions_by_text", + "required": false, + "description": "Search transactions using contact name or transaction description.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search Transactions by contact name or description" + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "transaction_page_number", + "required": false, + "description": "Page number of transactions to fetch, with a default value of 1. Used for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify the number of transaction records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_bank_transactions'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "bank_account_id", + "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": "transaction_type", + "tool_parameter_name": "transaction_type_filter", + "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": "date", + "tool_parameter_name": "transaction_date_range", + "description": "Start and end date, to provide a range within which the transaction date exist. Variants: date_start and date_end", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end date, to provide a range within which the transaction date exist. Variants: date_start and date_end" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "amount", + "tool_parameter_name": "transaction_amount_range", + "description": "Start and end amount, to provide a range within which the transaction amount exist. Variants: amount_start and amount_end", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start and end amount, to provide a range within which the transaction amount exist. Variants: amount_start and amount_end" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "transaction_status_list_view", + "description": "Transaction status wise list view - All, uncategorized, manually_added, matched, excluded, categorized", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction status wise list view - All, uncategorized, manually_added, matched, excluded, categorized" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "transaction_reference_number", + "description": "Search using Reference Number of the transaction", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search using Reference Number of the transaction" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "transaction_filter_type", + "description": "Filters the transactions based on the allowed types. Allowed Values: Status.All, Status.Uncategorized, Status.Categorized, Status.ManuallyAdded, Status.Excluded and Status.Matched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filters the transactions based on the allowed types. Allowed Values: Status.All, Status.Uncategorized, Status.Categorized, Status.ManuallyAdded, Status.Excluded and Status.Matched." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_transactions_by", + "description": "Sorts the transactions based on the allowed sort types. Allowed Values: date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sorts the transactions based on the allowed sort types. Allowed Values: date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_status", + "tool_parameter_name": "transaction_status_filter", + "description": "Transaction status wise list view - All, uncategorized, manually_added, matched, excluded, categorized", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction status wise list view - All, uncategorized, manually_added, matched, excluded, categorized" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_transactions_by_text", + "description": "Search Transactions by contact name or description", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search Transactions by contact name or description" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "transaction_page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetBaseCurrencyAdjustmentDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBaseCurrencyAdjustmentDetails.json new file mode 100644 index 00000000..a07a3197 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBaseCurrencyAdjustmentDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetBaseCurrencyAdjustmentDetails", + "fully_qualified_name": "ZohoBooksApi.GetBaseCurrencyAdjustmentDetails@0.1.0", + "description": "Retrieve base currency adjustment details by ID.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose currency adjustment details are being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "base_currency_adjustment_identifier", + "required": true, + "description": "Unique identifier of the base currency adjustment to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the base currency adjustment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "base_currency_adjustment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_base_currency_adjustment'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/basecurrencyadjustment/{base_currency_adjustment_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "base_currency_adjustment_id", + "tool_parameter_name": "base_currency_adjustment_identifier", + "description": "Unique identifier of the base currency adjustment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the base currency adjustment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetBillHistory.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBillHistory.json new file mode 100644 index 00000000..51e77435 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBillHistory.json @@ -0,0 +1,154 @@ +{ + "name": "GetBillHistory", + "fully_qualified_name": "ZohoBooksApi.GetBillHistory@0.1.0", + "description": "Retrieve the complete history and comments for a bill.\n\nThis tool retrieves the entire history and comments associated with a specified bill. It is useful for reviewing past interactions and notes on a bill.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "String identifier for the organization whose bill history and comments you wish to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier of the bill to retrieve its history and comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_bill_comments'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetBillPaymentsList.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBillPaymentsList.json new file mode 100644 index 00000000..63f0b47b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetBillPaymentsList.json @@ -0,0 +1,154 @@ +{ + "name": "GetBillPaymentsList", + "fully_qualified_name": "ZohoBooksApi.GetBillPaymentsList@0.1.0", + "description": "Retrieve the list of payments made for a specific bill.\n\nThis tool provides a list of all payments made for a specified bill using the bill ID. It should be called when you need to view detailed payment history for a particular bill.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which to retrieve bill payments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier for the specific bill to retrieve payment details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_bill_payments'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/payments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetContactActivityRecentComments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactActivityRecentComments.json new file mode 100644 index 00000000..4a74c313 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactActivityRecentComments.json @@ -0,0 +1,220 @@ +{ + "name": "GetContactActivityRecentComments", + "fully_qualified_name": "ZohoBooksApi.GetContactActivityRecentComments@0.1.0", + "description": "Retrieve recent comments for a specific contact.\n\nUse this tool to get a list of recent comments or activities associated with a specific contact in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose contact comments you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_unique_identifier", + "required": true, + "description": "Unique identifier of the contact to retrieve recent comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "Page number to be fetched. Defaults to 1 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to be fetched per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_contact_comments'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_unique_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetContactAddresses.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactAddresses.json new file mode 100644 index 00000000..bccc0cc7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactAddresses.json @@ -0,0 +1,154 @@ +{ + "name": "GetContactAddresses", + "fully_qualified_name": "ZohoBooksApi.GetContactAddresses@0.1.0", + "description": "Retrieve addresses for a specified contact.\n\nGet the shipping, billing, and additional addresses of a specific contact in Zoho Books. This tool is useful for retrieving address details when needing to display or utilize contact information in applications.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. This ID is necessary to fetch the contact's addresses within the specified organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_id", + "required": true, + "description": "Unique identifier of the contact in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_contact_address'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/address", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_id", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetContactPersonDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactPersonDetails.json new file mode 100644 index 00000000..ff1dc689 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactPersonDetails.json @@ -0,0 +1,187 @@ +{ + "name": "GetContactPersonDetails", + "fully_qualified_name": "ZohoBooksApi.GetContactPersonDetails@0.1.0", + "description": "Retrieve details of a specific contact person.\n\nUse this tool to get detailed information about a specific contact person associated with a given contact in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. This identifies which organization the contact person belongs to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_identifier", + "required": true, + "description": "Unique identifier for the contact in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "contact_person_identifier", + "required": true, + "description": "Unique identifier of the contact person in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact person." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_person_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_contact_person'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/contactpersons/{contact_person_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_person_id", + "tool_parameter_name": "contact_person_identifier", + "description": "Unique identifier of the contact person.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact person." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetContactRefundHistory.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactRefundHistory.json new file mode 100644 index 00000000..03ca7125 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactRefundHistory.json @@ -0,0 +1,220 @@ +{ + "name": "GetContactRefundHistory", + "fully_qualified_name": "ZohoBooksApi.GetContactRefundHistory@0.1.0", + "description": "Retrieve the refund history of a specific contact.\n\nUse this tool to get a list of all refunds associated with a particular contact in Zoho Books. This can be useful for financial reconciliations or customer service inquiries related to refund transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to access the specific account data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_unique_identifier", + "required": true, + "description": "Unique identifier of the contact in Zoho Books for refund history retrieval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "page_number", + "required": false, + "description": "The page number to fetch for the contact's refund history. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specifies how many refund records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_contact_refunds'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/refunds", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_unique_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetContactStatementMailContent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactStatementMailContent.json new file mode 100644 index 00000000..1fec60bd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetContactStatementMailContent.json @@ -0,0 +1,220 @@ +{ + "name": "GetContactStatementMailContent", + "fully_qualified_name": "ZohoBooksApi.GetContactStatementMailContent@0.1.0", + "description": "Retrieve the statement email content for a contact.\n\nUse this tool to get the content of a statement email for a specified contact in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization to retrieve statement mail content for the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_unique_identifier", + "required": true, + "description": "Unique identifier for the contact to retrieve the statement mail content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "statement_start_date", + "required": false, + "description": "Start date for the statement. Use format [yyyy-mm-dd]. Defaults to current month if not provided.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If start_date and end_date are not given, current month's statement will be sent to contact. Date format [yyyy-mm-dd]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "start_date" + }, + { + "name": "statement_end_date", + "required": false, + "description": "End date for the statement in the format [yyyy-mm-dd].", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date for the statement. Date format [yyyy-mm-dd]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "end_date" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_contact_statement_mail'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/statements/email", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "start_date", + "tool_parameter_name": "statement_start_date", + "description": "If start_date and end_date are not given, current month's statement will be sent to contact. Date format [yyyy-mm-dd]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If start_date and end_date are not given, current month's statement will be sent to contact. Date format [yyyy-mm-dd]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "end_date", + "tool_parameter_name": "statement_end_date", + "description": "End date for the statement. Date format [yyyy-mm-dd]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date for the statement. Date format [yyyy-mm-dd]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_unique_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteComments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteComments.json new file mode 100644 index 00000000..9e6cee77 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteComments.json @@ -0,0 +1,154 @@ +{ + "name": "GetCreditNoteComments", + "fully_qualified_name": "ZohoBooksApi.GetCreditNoteComments@0.1.0", + "description": "Retrieve comments and history of a credit note.\n\nUse this tool to obtain the history and comments associated with a specific credit note by providing the credit note's ID. This can be useful for tracking changes or feedback related to the credit transaction.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "Provide the organization's unique ID to retrieve credit note comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Provide the unique identifier of the credit note to retrieve its comments and history.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_credit_note_comments'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteDetails.json new file mode 100644 index 00000000..5ca57530 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteDetails.json @@ -0,0 +1,220 @@ +{ + "name": "GetCreditNoteDetails", + "fully_qualified_name": "ZohoBooksApi.GetCreditNoteDetails@0.1.0", + "description": "Retrieve details of a specific credit note using its ID.\n\nCall this tool to obtain detailed information about an existing credit note by providing its unique identifier. Useful for tracking, reviewing, or managing credit notes within Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "The unique identifier of the credit note to retrieve details for. This ID is essential for accessing the specific credit note information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "response_format", + "required": false, + "description": "Specify the format of the credit note details: json, pdf, or html. Default is html.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "You can get credit note details as json/pdf/html. Default format is html. Allowed Values: json, pdf and html" + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + }, + { + "name": "export_with_default_print_option", + "required": false, + "description": "Specify whether to export the credit note PDF with the default print option. Use 'true' or 'false'.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Export credit note pdf with default print option. Allowed Values: true, false, on and off" + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_credit_note'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "export_with_default_print_option", + "description": "Export credit note pdf with default print option. Allowed Values: true, false, on and off", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Export credit note pdf with default print option. Allowed Values: true, false, on and off" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "response_format", + "description": "You can get credit note details as json/pdf/html. Default format is html. Allowed Values: json, pdf and html", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "You can get credit note details as json/pdf/html. Default format is html. Allowed Values: json, pdf and html" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteEmailContent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteEmailContent.json new file mode 100644 index 00000000..d41025d3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteEmailContent.json @@ -0,0 +1,187 @@ +{ + "name": "GetCreditNoteEmailContent", + "fully_qualified_name": "ZohoBooksApi.GetCreditNoteEmailContent@0.1.0", + "description": "Retrieve email content for a given credit note.\n\nUse this tool to get the email content associated with a specified credit note by its ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization to retrieve the credit note email content for. This is a required field.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to retrieve its email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "specified_email_template_id", + "required": false, + "description": "ID of a specific email template. If not provided, defaults to customer's or the default template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "inferrable": true, + "http_endpoint_parameter_name": "email_template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_credit_note_email'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/email", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "email_template_id", + "tool_parameter_name": "specified_email_template_id", + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNotePdfTemplates.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNotePdfTemplates.json new file mode 100644 index 00000000..fcbd12dd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNotePdfTemplates.json @@ -0,0 +1,121 @@ +{ + "name": "GetCreditNotePdfTemplates", + "fully_qualified_name": "ZohoBooksApi.GetCreditNotePdfTemplates@0.1.0", + "description": "Retrieve all credit note PDF templates from Zoho Books.\n\nUse this tool to obtain a list of all available credit note PDF templates from Zoho Books. It's useful when you need to browse or select a specific credit note template for use.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to fetch credit note templates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_credit_note_templates'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/templates", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteRefund.json new file mode 100644 index 00000000..68a27fe5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCreditNoteRefund.json @@ -0,0 +1,187 @@ +{ + "name": "GetCreditNoteRefund", + "fully_qualified_name": "ZohoBooksApi.GetCreditNoteRefund@0.1.0", + "description": "Retrieve refund details for a specific credit note.\n\nUse this tool to obtain information about the refund of a specific credit note by providing the credit note ID and refund ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the credit note refund is being retrieved. Use a valid organization identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to retrieve refund details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "credit_note_refund_id", + "required": true, + "description": "Unique identifier of the credit note refund to retrieve specific refund details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_refund_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_credit_note_refund'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds/{creditnote_refund_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_refund_id", + "tool_parameter_name": "credit_note_refund_id", + "description": "Unique identifier of the credit note refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note refund." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrencyDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrencyDetails.json new file mode 100644 index 00000000..5db57827 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrencyDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetCurrencyDetails", + "fully_qualified_name": "ZohoBooksApi.GetCurrencyDetails@0.1.0", + "description": "Get the details of a specific currency.\n\nUse this tool to obtain detailed information about a particular currency by its ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the currency details are requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_identifier", + "required": true, + "description": "Unique identifier for the currency to fetch details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_currency'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies/{currency_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "currency_identifier", + "description": "Unique identifier of the currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrencyExchangeRate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrencyExchangeRate.json new file mode 100644 index 00000000..67decebe --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrencyExchangeRate.json @@ -0,0 +1,187 @@ +{ + "name": "GetCurrencyExchangeRate", + "fully_qualified_name": "ZohoBooksApi.GetCurrencyExchangeRate@0.1.0", + "description": "Retrieve details of a specific currency exchange rate.\n\nThis tool is used to get details of an exchange rate associated with a specified currency. It should be called when you need information about a specific exchange rate for financial or currency conversion purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which you want to retrieve exchange rate details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_unique_identifier", + "required": true, + "description": "Unique identifier for the currency. Use to specify the currency for the exchange rate details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + }, + { + "name": "exchange_rate_unique_id", + "required": true, + "description": "Unique identifier of the exchange rate to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the exchange rate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "exchange_rate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_exchange_rate'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates/{exchange_rate_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "currency_unique_identifier", + "description": "Unique identifier of the currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "exchange_rate_id", + "tool_parameter_name": "exchange_rate_unique_id", + "description": "Unique identifier of the exchange rate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the exchange rate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrentRunningTimer.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrentRunningTimer.json new file mode 100644 index 00000000..874f9d18 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrentRunningTimer.json @@ -0,0 +1,121 @@ +{ + "name": "GetCurrentRunningTimer", + "fully_qualified_name": "ZohoBooksApi.GetCurrentRunningTimer@0.1.0", + "description": "Retrieve the current running timer for a user.\n\nUse this tool to get information about the current running timer for personal time tracking in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization whose running timer is being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_running_timer'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/timeentries/runningtimer/me", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrentUserDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrentUserDetails.json new file mode 100644 index 00000000..cb80efd6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCurrentUserDetails.json @@ -0,0 +1,121 @@ +{ + "name": "GetCurrentUserDetails", + "fully_qualified_name": "ZohoBooksApi.GetCurrentUserDetails@0.1.0", + "description": "Retrieve details of the current user from Zoho Books.\n\nUse this tool to get information about the currently authenticated user in Zoho Books. Ideal for scenarios where user-specific data is needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books to retrieve the current user details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_current_user'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/users/me", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomModuleRecordDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomModuleRecordDetails.json new file mode 100644 index 00000000..438b536e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomModuleRecordDetails.json @@ -0,0 +1,187 @@ +{ + "name": "GetCustomModuleRecordDetails", + "fully_qualified_name": "ZohoBooksApi.GetCustomModuleRecordDetails@0.1.0", + "description": "Fetch details of an organization in Zoho Books.\n\nUse this tool to retrieve details of a specific organization by providing the module name and module ID in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "module_name", + "required": true, + "description": "The name of the module associated with the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_name" + }, + { + "name": "custom_module_id", + "required": true, + "description": "The ID for the specific custom module in Zoho Books that you want to retrieve details for. This value should be an integer.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom Module ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_custom_module_record_details'.", + "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": [ + "ZohoBooks.custommodules.ALL" + ] + } + }, + "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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/{module_name}/{module_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_name", + "tool_parameter_name": "module_name", + "description": "Module Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_id", + "tool_parameter_name": "custom_module_id", + "description": "Custom Module ID", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom Module ID" + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomerDebitNote.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomerDebitNote.json new file mode 100644 index 00000000..5e664830 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomerDebitNote.json @@ -0,0 +1,220 @@ +{ + "name": "GetCustomerDebitNote", + "fully_qualified_name": "ZohoBooksApi.GetCustomerDebitNote@0.1.0", + "description": "Retrieve the details of a customer debit note from Zoho Books.\n\nThis tool is used to get detailed information about a specific customer debit note by its ID from Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Organization ID for the request. This ID is required to specify the organization from which to retrieve the debit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "debit_note_unique_id", + "required": true, + "description": "Unique identifier for the specific debit note to retrieve details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the debit note" + }, + "inferrable": true, + "http_endpoint_parameter_name": "debit_note_id" + }, + { + "name": "response_format", + "required": false, + "description": "Format of the debit note details. Options are json, pdf, or html. Default is json.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular debit note in formats such as json/ pdf/ html. Default format is json. Allowed values json pdf and html" + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + }, + { + "name": "print_pdf", + "required": false, + "description": "If true, print the exported PDF version of the debit note; otherwise, do not print.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_customer_debit_note'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{debit_note_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "Organization ID for the request", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "print_pdf", + "description": "Print the exported pdf.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "response_format", + "description": "Get the details of a particular debit note in formats such as json/ pdf/ html. Default format is json. Allowed values json pdf and html", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular debit note in formats such as json/ pdf/ html. Default format is json. Allowed values json pdf and html" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "debit_note_id", + "tool_parameter_name": "debit_note_unique_id", + "description": "Unique identifier for the debit note", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the debit note" + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomerPaymentDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomerPaymentDetails.json new file mode 100644 index 00000000..86606989 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomerPaymentDetails.json @@ -0,0 +1,193 @@ +{ + "name": "GetCustomerPaymentDetails", + "fully_qualified_name": "ZohoBooksApi.GetCustomerPaymentDetails@0.1.0", + "description": "Retrieve details of a specific customer payment.\n\nUse this tool to obtain information about a specific customer payment by providing the payment ID. Ideal for retrieving payment history or verifying payment details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the payment details are requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_identifier", + "required": true, + "description": "The unique identifier of the payment to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "response_format", + "required": false, + "description": "Format of the response. Allowed values: 'json' or 'pdf'. Default is 'json'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "json", + "pdf" + ], + "properties": null, + "inner_properties": null, + "description": "Format of the response. Allowed values are json and pdf. Default is json." + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_customer_payment'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments/{payment_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "response_format", + "description": "Format of the response. Allowed values are json and pdf. Default is json.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "json", + "pdf" + ], + "properties": null, + "inner_properties": null, + "description": "Format of the response. Allowed values are json and pdf. Default is json." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "json", + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_identifier", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomerPaymentRefundDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomerPaymentRefundDetails.json new file mode 100644 index 00000000..6edfd095 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetCustomerPaymentRefundDetails.json @@ -0,0 +1,187 @@ +{ + "name": "GetCustomerPaymentRefundDetails", + "fully_qualified_name": "ZohoBooksApi.GetCustomerPaymentRefundDetails@0.1.0", + "description": "Obtain details of a specific customer payment refund.\n\nUse this tool to get detailed information about a particular refund related to a customer's payment.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization. This is required to specify which organization's data to access.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "customer_payment_unique_id", + "required": true, + "description": "Unique identifier of the customer payment to retrieve refund details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_payment_id" + }, + { + "name": "refund_identifier", + "required": true, + "description": "Unique identifier of the refund for the specified customer payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "refund_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_customer_payment_refund'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds/{refund_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_payment_id", + "tool_parameter_name": "customer_payment_unique_id", + "description": "Unique identifier of the customer payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "refund_id", + "tool_parameter_name": "refund_identifier", + "description": "Unique identifier of the refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the refund." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetEstimateComments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetEstimateComments.json new file mode 100644 index 00000000..9a6f65d8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetEstimateComments.json @@ -0,0 +1,154 @@ +{ + "name": "GetEstimateComments", + "fully_qualified_name": "ZohoBooksApi.GetEstimateComments@0.1.0", + "description": "Get the complete history and comments of an estimate.\n\nThis tool retrieves all comments and historical data associated with a specific estimate. Use it to track changes or discussions about an estimate.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization whose estimate comments are needed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier for the estimate to retrieve its history and comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_estimate_comments'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetEstimateEmailContent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetEstimateEmailContent.json new file mode 100644 index 00000000..09d7758d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetEstimateEmailContent.json @@ -0,0 +1,187 @@ +{ + "name": "GetEstimateEmailContent", + "fully_qualified_name": "ZohoBooksApi.GetEstimateEmailContent@0.1.0", + "description": "Retrieve the email content for a specific estimate.\n\nUse this tool to get the email content associated with a specific estimate by providing the estimate ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which you want to retrieve the estimate email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "email_template_id", + "required": true, + "description": "Optional. Specify a template ID to retrieve the email content based on a specific template. If not provided, defaults to the customer's associated or default template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "inferrable": true, + "http_endpoint_parameter_name": "email_template_id" + }, + { + "name": "estimate_id", + "required": true, + "description": "Unique identifier for the estimate to retrieve its email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_estimate_email'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/email", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "email_template_id", + "tool_parameter_name": "email_template_id", + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_id", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetEstimateTemplates.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetEstimateTemplates.json new file mode 100644 index 00000000..23846d0c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetEstimateTemplates.json @@ -0,0 +1,121 @@ +{ + "name": "GetEstimateTemplates", + "fully_qualified_name": "ZohoBooksApi.GetEstimateTemplates@0.1.0", + "description": "Retrieve all estimate PDF templates.\n\nThis tool retrieves a list of all available PDF templates used for estimates. It should be called when users need to view or select templates for estimate documents.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to fetch estimate templates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_estimate_templates'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/templates", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetExpenseComments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetExpenseComments.json new file mode 100644 index 00000000..f5dc7e9a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetExpenseComments.json @@ -0,0 +1,154 @@ +{ + "name": "GetExpenseComments", + "fully_qualified_name": "ZohoBooksApi.GetExpenseComments@0.1.0", + "description": "Retrieve comments and history for a specific expense.\n\nThis tool should be called to get the discussion and history associated with an expense, specified by its ID, in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books required to fetch the expense comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "expense_unique_id", + "required": true, + "description": "Unique identifier for the expense to retrieve its comments and history in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_expense_comments'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses/{expense_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expense_id", + "tool_parameter_name": "expense_unique_id", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetExpenseDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetExpenseDetails.json new file mode 100644 index 00000000..ef8e1ca4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetExpenseDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetExpenseDetails", + "fully_qualified_name": "ZohoBooksApi.GetExpenseDetails@0.1.0", + "description": "Retrieve details of a specific expense by ID.\n\nUse this tool to get detailed information about an expense by providing the expense ID. Ideal for financial reviews or tracking specific expenses.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "String representing the ID of the organization for which the expense details are requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "expense_identifier", + "required": true, + "description": "Unique identifier for the expense to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses/{expense_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expense_id", + "tool_parameter_name": "expense_identifier", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetFixedAssetDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetFixedAssetDetails.json new file mode 100644 index 00000000..6798a17e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetFixedAssetDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetFixedAssetDetails", + "fully_qualified_name": "ZohoBooksApi.GetFixedAssetDetails@0.1.0", + "description": "Retrieve details of a fixed asset using its ID.\n\nThis tool is used to obtain detailed information about a fixed asset by providing its unique ID. It should be called when you need specific details about an asset in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization for which you want to retrieve the asset details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier for the fixed asset to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_fixed_asset'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetFixedAssetTypeList.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetFixedAssetTypeList.json new file mode 100644 index 00000000..7fa04ae9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetFixedAssetTypeList.json @@ -0,0 +1,187 @@ +{ + "name": "GetFixedAssetTypeList", + "fully_qualified_name": "ZohoBooksApi.GetFixedAssetTypeList@0.1.0", + "description": "Retrieve a list of fixed asset types.\n\nCall this tool to obtain a list of all available fixed asset types in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization to retrieve asset types for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "The page number to retrieve for the list of fixed asset types. Defaults to 1 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_fixed_asset_type_list'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassettypes", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetFixedAssetsList.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetFixedAssetsList.json new file mode 100644 index 00000000..ef3de6f9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetFixedAssetsList.json @@ -0,0 +1,286 @@ +{ + "name": "GetFixedAssetsList", + "fully_qualified_name": "ZohoBooksApi.GetFixedAssetsList@0.1.0", + "description": "Retrieve a list of fixed assets from Zoho Books.\n\nUse this tool to obtain a detailed list of fixed assets stored in Zoho Books. Ideal for managing and reviewing asset inventories.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which to list fixed assets.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "filter_fixed_asset_status", + "required": false, + "description": "Filter the fixed asset list by status. Valid inputs: Status.All, Status.Active, Status.Cancel, Status.FullyDepreciated, Status.WriteOff, Status.Sold, Status.Draft.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter fixed asset by fixed asset status. Allowed Values: Status.All, Status.Active, Status.Cancel, Status.FullyDepreciated, Status.WriteOff, Status.Sold and Status.Draft" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Specify the column to sort the fixed asset list. Choose from: asset_name, asset_number, asset_cost, created_time, current_asset_value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort fixed asset list. Allowed Values: asset_name, asset_number, asset_cost, created_time and current_asset_value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "sort_order", + "required": false, + "description": "Sort the fixed asset list in ascending or descending order. Use 'A' for ascending and 'D' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort fixed asset list in ascendeing or descending order. Allowed Values: A and D" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_order" + }, + { + "name": "page_number", + "required": false, + "description": "The page number to fetch from the fixed asset list. Defaults to 1 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of fixed asset records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_fixed_assets'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_fixed_asset_status", + "description": "Filter fixed asset by fixed asset status. Allowed Values: Status.All, Status.Active, Status.Cancel, Status.FullyDepreciated, Status.WriteOff, Status.Sold and Status.Draft", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter fixed asset by fixed asset status. Allowed Values: Status.All, Status.Active, Status.Cancel, Status.FullyDepreciated, Status.WriteOff, Status.Sold and Status.Draft" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "description": "Sort fixed asset list. Allowed Values: asset_name, asset_number, asset_cost, created_time and current_asset_value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort fixed asset list. Allowed Values: asset_name, asset_number, asset_cost, created_time and current_asset_value" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_order", + "tool_parameter_name": "sort_order", + "description": "Sort fixed asset list in ascendeing or descending order. Allowed Values: A and D", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort fixed asset list in ascendeing or descending order. Allowed Values: A and D" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceAttachment.json new file mode 100644 index 00000000..cb4ec43f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceAttachment.json @@ -0,0 +1,187 @@ +{ + "name": "GetInvoiceAttachment", + "fully_qualified_name": "ZohoBooksApi.GetInvoiceAttachment@0.1.0", + "description": "Fetch attachment file from a specified invoice.\n\nCall this tool to retrieve the file attached to a specific invoice using its ID. Useful for accessing documents associated with invoices.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to retrieve the invoice attachment for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to fetch the attachment from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "get_thumbnail", + "required": false, + "description": "Set to true to get the thumbnail of the invoice attachment.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the thumbnail of the attachment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "preview" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_invoice_attachment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/attachment", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "preview", + "tool_parameter_name": "get_thumbnail", + "description": "Get the thumbnail of the attachment.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the thumbnail of the attachment." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceComments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceComments.json new file mode 100644 index 00000000..763d157f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceComments.json @@ -0,0 +1,154 @@ +{ + "name": "GetInvoiceComments", + "fully_qualified_name": "ZohoBooksApi.GetInvoiceComments@0.1.0", + "description": "Get comments and history of an invoice.\n\nUse this tool to retrieve the full history and all comments associated with a specific invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the invoice comments and history are being retrieved. Must be a unique string identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier for the specific invoice to retrieve comments and history.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_invoice_comments'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceCreditsApplied.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceCreditsApplied.json new file mode 100644 index 00000000..771ce200 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceCreditsApplied.json @@ -0,0 +1,154 @@ +{ + "name": "GetInvoiceCreditsApplied", + "fully_qualified_name": "ZohoBooksApi.GetInvoiceCreditsApplied@0.1.0", + "description": "Retrieve the credits applied to a specific invoice.\n\nUse this tool to obtain a list of all credits that have been applied to a particular invoice. It should be called when detailed invoice credit information is needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to retrieve credits applied to an invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice for which credits are applied.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_invoice_credits_applied'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/creditsapplied", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceDetails.json new file mode 100644 index 00000000..29f976ea --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceDetails.json @@ -0,0 +1,220 @@ +{ + "name": "GetInvoiceDetails", + "fully_qualified_name": "ZohoBooksApi.GetInvoiceDetails@0.1.0", + "description": "Retrieve details of a specific invoice by ID.\n\nThis tool is used to get detailed information about a specific invoice using its ID. It can be called when needing to verify invoice details, check status, or confirm amounts.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the invoice details are requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice. Used to specify which invoice details to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "format", + "required": false, + "description": "Specify the format for invoice details: json, pdf, or html. Default is json.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular invoice in formats such as json/ pdf/ html. Default format is json. Allowed values json pdf and html" + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + }, + { + "name": "print_pdf", + "required": false, + "description": "Boolean value indicating whether to print the exported PDF.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "print_pdf", + "description": "Print the exported pdf.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "format", + "description": "Get the details of a particular invoice in formats such as json/ pdf/ html. Default format is json. Allowed values json pdf and html", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular invoice in formats such as json/ pdf/ html. Default format is json. Allowed values json pdf and html" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceEmailContent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceEmailContent.json new file mode 100644 index 00000000..cd2a1f08 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceEmailContent.json @@ -0,0 +1,187 @@ +{ + "name": "GetInvoiceEmailContent", + "fully_qualified_name": "ZohoBooksApi.GetInvoiceEmailContent@0.1.0", + "description": "Retrieve the email content for a specific invoice.\n\nUse this tool to get the formatted email content of a particular invoice by specifying the invoice ID. Ideal for scenarios where you need to access or send invoice details via email.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization. Required to retrieve invoice email content for the specified organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to retrieve its email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "email_template_id", + "required": false, + "description": "Optional. Specify a template ID to get the email content based on a specific template. Defaults to customer-associated or default template if not provided.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "inferrable": true, + "http_endpoint_parameter_name": "email_template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_invoice_email'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/email", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "email_template_id", + "tool_parameter_name": "email_template_id", + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceList.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceList.json new file mode 100644 index 00000000..ac895ad4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoiceList.json @@ -0,0 +1,913 @@ +{ + "name": "GetInvoiceList", + "fully_qualified_name": "ZohoBooksApi.GetInvoiceList@0.1.0", + "description": "Retrieve and organize a list of invoices from Zoho Books.\n\nThis tool fetches a list of invoices using Zoho Books' API with options for pagination, filtering, searching, and sorting. Useful for finding specific invoices or browsing records systematically.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization for which invoices are being queried. This ID is crucial for accessing the correct set of invoices within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "search_by_invoice_number", + "required": false, + "description": "Search for invoices using their unique invoice number. Supports 'startswith' and 'contains' variants. Max length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by invoice number. Filters invoices based on their unique identifier. Supports invoice_number_startswith and invoice_number_contains variants. Maximum length is 100 characters. Useful for finding specific invoices or invoices with similar numbering patterns." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_number" + }, + { + "name": "search_invoice_by_item_name", + "required": false, + "description": "Filters invoices by product or service name in line items. Supports 'item_name_startswith' and 'item_name_contains'. Max length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by item name. Filters invoices based on product or service names in invoice line items. Supports item_name_startswith and item_name_contains variants. Maximum length is 100 characters. Useful for finding invoices with specific products or services." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_name" + }, + { + "name": "search_by_item_id", + "required": false, + "description": "Search invoices by item ID. Use the unique identifier of a product or service to filter invoices that include specific line items.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by item ID. Filters invoices based on the unique identifier of specific products or services in line items. Use the GET `/items` API to find available item IDs. Useful for finding all invoices containing a specific product or service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "item_description_filter", + "required": false, + "description": "Filter invoices by item description using keywords. Supports 'startswith' and 'contains' variants. Max 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by item description. Filters invoices based on detailed descriptions of products or services in line items. Supports item_description_startswith and item_description_contains variants. Maximum length is 100 characters. Useful for finding invoices with specific item descriptions or technical specifications." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_description" + }, + { + "name": "search_reference_number", + "required": false, + "description": "Search invoices by reference number, such as purchase order or project codes, to find invoices associated with specific projects or transactions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by reference number. Filters invoices based on external reference identifiers like purchase order numbers, contract numbers, or project codes. Useful for finding invoices associated with specific projects or business transactions." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "search_by_customer_name", + "required": false, + "description": "Search for invoices using the customer's name, with a maximum length of 100 characters, to generate customer-specific reports or find all invoices for a customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by customer name. Filters invoices based on the business or individual name associated with the invoice. Maximum length is 100 characters. Useful for finding all invoices for a specific customer or generating customer reports." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "recurring_invoice_id", + "required": false, + "description": "ID of the recurring invoice from which the invoice is created. Use to filter invoices tied to specific recurring billing cycles.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the recurring invoice from which the invoice is created." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_invoice_id" + }, + { + "name": "customer_email_filter", + "required": false, + "description": "Filter invoices by the customer's email address. Maximum length is 100 characters. Ideal for finding specific customer invoices or customer segment analysis.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by customer email address. Filters invoices based on the email address of the customer or contact person. Maximum length is 100 characters. Useful for finding invoices for specific customers or generating customer segment reports." + }, + "inferrable": true, + "http_endpoint_parameter_name": "email" + }, + { + "name": "search_by_total_amount", + "required": false, + "description": "Search and filter invoices based on the final total amount, including taxes, discounts, and adjustments. Useful for finding invoices within specific price ranges or identifying high-value transactions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by total amount. Filters invoices based on the final invoice amount including taxes, discounts, and adjustments. Useful for finding invoices within specific price ranges or identifying high-value transactions." + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "search_by_outstanding_balance", + "required": false, + "description": "Filter invoices by outstanding balance to find overdue invoices, track receivables, or generate aging reports.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by outstanding balance. Filters invoices based on the remaining unpaid amount owed by the customer. Useful for finding overdue invoices, tracking receivables, or generating aging reports." + }, + "inferrable": true, + "http_endpoint_parameter_name": "balance" + }, + { + "name": "search_by_custom_field", + "required": false, + "description": "Search invoices using custom fields. Supports 'custom_field_startswith' and 'custom_field_contains' for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by custom fields.Variants: custom_field_startswith and custom_field_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_field" + }, + { + "name": "invoice_date_filter", + "required": false, + "description": "Filter invoices by invoice date using yyyy-mm-dd format. Supports variants like date_start, date_end, date_before, and date_after to find invoices within specific date ranges.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by invoice date. Filters invoices based on the date they were created. Use yyyy-mm-dd format. Supports variants: date_start, date_end, date_before and date_after. Useful for finding invoices within date ranges or specific time periods." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "invoice_due_date_filter", + "required": false, + "description": "Filter invoices by due date using yyyy-mm-dd format. Supports start, end, before, and after variants for flexible searching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by due date. Filters invoices based on the payment due date. Use yyyy-mm-dd format. Supports variants: due_date_start, due_date_end, due_date_before and due_date_after. Useful for finding overdue invoices or invoices due within specific periods." + }, + "inferrable": true, + "http_endpoint_parameter_name": "due_date" + }, + { + "name": "filter_by_creation_date", + "required": false, + "description": "Filter invoices by creation date with yyyy-mm-dd format. Supports variants: start, end, before, and after.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by creation date. Filters invoices based on the date they were created. Use yyyy-mm-dd format. Supports variants: created_date_start, created_date_end, created_date_before and created_date_after. Useful for finding invoices created within specific time periods or date ranges." + }, + "inferrable": true, + "http_endpoint_parameter_name": "created_date" + }, + { + "name": "filter_by_last_modified_time", + "required": false, + "description": "Filters invoices modified after a specific timestamp in YYYY-MM-DDTHH:MM:SS-UTC format. Useful for identifying recently updated invoices.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices modified after a specific time. Filters invoices based on their last modification timestamp. Use YYYY-MM-DDTHH:MM:SS-UTC format. Useful for finding recently updated invoices or syncing data changes. Example : 2023-11-18T02:02:51-0800, 2025-19-19T02:02:51%2B0800" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "invoice_status", + "required": false, + "description": "Filter invoices by their current status (e.g., sent, draft, overdue, etc.).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by status. Filters invoices based on their current state in the billing workflow. Allowed values: sent, draft, overdue, paid, void, unpaid, partially_paid and viewed. Useful for finding invoices in specific stages of the billing process." + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "search_by_customer_id", + "required": false, + "description": "Filters invoices using the unique customer ID. Use the ID from the Contacts API to find all invoices for a specific customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by customer ID. Filters invoices based on the unique identifier of the customer for whom the invoice was created. Use the customer ID returned by the Contacts API to find all invoices for a specific customer." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "filter_invoices_by_criteria", + "required": false, + "description": "Filter invoices by status (e.g., Status.Sent, Status.Paid) or payment expected date using Date.PaymentExpectedDate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter invoices by status or payment expected date. Use Status.* for status-based filtering (e.g., Status.Sent, Status.Paid) or Date.PaymentExpectedDate for date-based filtering. Provides advanced filtering options beyond basic search parameters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "general_search_text", + "required": false, + "description": "General search for invoices by invoice number, purchase order, or customer name. Accepts up to 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by invoice number, purchase order, or customer name. This parameter performs a general search across multiple invoice fields. Maximum length is 100 characters. Useful for quick searches when you know part of the invoice information but are unsure which specific field to search." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Specify the column to sort invoices by. Options: customer_name, invoice_number, date, due_date, total, balance, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort invoices by specific column. Allowed values: customer_name, invoice_number, date, due_date, total, balance and created_time. Use this parameter to organize invoice results in a specific order for better data analysis and reporting." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "search_by_crm_potential_id", + "required": false, + "description": "Find invoices linked to a specific CRM deal or opportunity using its potential ID from Zoho CRM.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by CRM potential ID. This parameter allows you to find invoices associated with a specific deal or opportunity in your Zoho CRM system. Use the potential ID from your CRM to link invoices to sales opportunities and track revenue from specific deals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "zcrm_potential_id" + }, + { + "name": "response_format_type", + "required": false, + "description": "Specifies the desired response format: 0 for all invoices, 1 for all invoices with counts and totals, 2 for count only, 3 for count and totals, 4 for invoices and totals.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To get desired response format. There are 5 formats of responses: 0 (Includes all invoices), 1 (Includes all invoices, the number of invoices, and the sum of their total and balance amounts), 2 (Includes only the number of invoices), 3 (Includes the number of invoices and the sum of their total and balance amounts), and 4 (Includes all invoices and the sum of their total and balance amounts)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "response_option" + }, + { + "name": "page_number", + "required": false, + "description": "Page number to fetch from paginated results. Default is 1. Use with 'per_page' for navigating large data sets.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched from the paginated results. Default value is 1. Use this parameter along with per_page to navigate through large sets of invoice data. Useful for implementing pagination in your application." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Default is 200, maximum is 200. Use to control result size for performance optimization.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200. Use this parameter to control the size of each page of results. Maximum value is 200. Useful for optimizing data transfer and improving application performance." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_invoices'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_number", + "tool_parameter_name": "search_by_invoice_number", + "description": "Search invoices by invoice number. Filters invoices based on their unique identifier. Supports invoice_number_startswith and invoice_number_contains variants. Maximum length is 100 characters. Useful for finding specific invoices or invoices with similar numbering patterns.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by invoice number. Filters invoices based on their unique identifier. Supports invoice_number_startswith and invoice_number_contains variants. Maximum length is 100 characters. Useful for finding specific invoices or invoices with similar numbering patterns." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_name", + "tool_parameter_name": "search_invoice_by_item_name", + "description": "Search invoices by item name. Filters invoices based on product or service names in invoice line items. Supports item_name_startswith and item_name_contains variants. Maximum length is 100 characters. Useful for finding invoices with specific products or services.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by item name. Filters invoices based on product or service names in invoice line items. Supports item_name_startswith and item_name_contains variants. Maximum length is 100 characters. Useful for finding invoices with specific products or services." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "search_by_item_id", + "description": "Search invoices by item ID. Filters invoices based on the unique identifier of specific products or services in line items. Use the GET `/items` API to find available item IDs. Useful for finding all invoices containing a specific product or service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by item ID. Filters invoices based on the unique identifier of specific products or services in line items. Use the GET `/items` API to find available item IDs. Useful for finding all invoices containing a specific product or service." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_description", + "tool_parameter_name": "item_description_filter", + "description": "Search invoices by item description. Filters invoices based on detailed descriptions of products or services in line items. Supports item_description_startswith and item_description_contains variants. Maximum length is 100 characters. Useful for finding invoices with specific item descriptions or technical specifications.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by item description. Filters invoices based on detailed descriptions of products or services in line items. Supports item_description_startswith and item_description_contains variants. Maximum length is 100 characters. Useful for finding invoices with specific item descriptions or technical specifications." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "search_reference_number", + "description": "Search invoices by reference number. Filters invoices based on external reference identifiers like purchase order numbers, contract numbers, or project codes. Useful for finding invoices associated with specific projects or business transactions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by reference number. Filters invoices based on external reference identifiers like purchase order numbers, contract numbers, or project codes. Useful for finding invoices associated with specific projects or business transactions." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "search_by_customer_name", + "description": "Search invoices by customer name. Filters invoices based on the business or individual name associated with the invoice. Maximum length is 100 characters. Useful for finding all invoices for a specific customer or generating customer reports.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by customer name. Filters invoices based on the business or individual name associated with the invoice. Maximum length is 100 characters. Useful for finding all invoices for a specific customer or generating customer reports." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_invoice_id", + "tool_parameter_name": "recurring_invoice_id", + "description": "ID of the recurring invoice from which the invoice is created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the recurring invoice from which the invoice is created." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "email", + "tool_parameter_name": "customer_email_filter", + "description": "Search invoices by customer email address. Filters invoices based on the email address of the customer or contact person. Maximum length is 100 characters. Useful for finding invoices for specific customers or generating customer segment reports.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by customer email address. Filters invoices based on the email address of the customer or contact person. Maximum length is 100 characters. Useful for finding invoices for specific customers or generating customer segment reports." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "search_by_total_amount", + "description": "Search invoices by total amount. Filters invoices based on the final invoice amount including taxes, discounts, and adjustments. Useful for finding invoices within specific price ranges or identifying high-value transactions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by total amount. Filters invoices based on the final invoice amount including taxes, discounts, and adjustments. Useful for finding invoices within specific price ranges or identifying high-value transactions." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "balance", + "tool_parameter_name": "search_by_outstanding_balance", + "description": "Search invoices by outstanding balance. Filters invoices based on the remaining unpaid amount owed by the customer. Useful for finding overdue invoices, tracking receivables, or generating aging reports.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by outstanding balance. Filters invoices based on the remaining unpaid amount owed by the customer. Useful for finding overdue invoices, tracking receivables, or generating aging reports." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "custom_field", + "tool_parameter_name": "search_by_custom_field", + "description": "Search invoices by custom fields.Variants: custom_field_startswith and custom_field_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by custom fields.Variants: custom_field_startswith and custom_field_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "invoice_date_filter", + "description": "Search invoices by invoice date. Filters invoices based on the date they were created. Use yyyy-mm-dd format. Supports variants: date_start, date_end, date_before and date_after. Useful for finding invoices within date ranges or specific time periods.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by invoice date. Filters invoices based on the date they were created. Use yyyy-mm-dd format. Supports variants: date_start, date_end, date_before and date_after. Useful for finding invoices within date ranges or specific time periods." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "due_date", + "tool_parameter_name": "invoice_due_date_filter", + "description": "Search invoices by due date. Filters invoices based on the payment due date. Use yyyy-mm-dd format. Supports variants: due_date_start, due_date_end, due_date_before and due_date_after. Useful for finding overdue invoices or invoices due within specific periods.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by due date. Filters invoices based on the payment due date. Use yyyy-mm-dd format. Supports variants: due_date_start, due_date_end, due_date_before and due_date_after. Useful for finding overdue invoices or invoices due within specific periods." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "created_date", + "tool_parameter_name": "filter_by_creation_date", + "description": "Search invoices by creation date. Filters invoices based on the date they were created. Use yyyy-mm-dd format. Supports variants: created_date_start, created_date_end, created_date_before and created_date_after. Useful for finding invoices created within specific time periods or date ranges.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by creation date. Filters invoices based on the date they were created. Use yyyy-mm-dd format. Supports variants: created_date_start, created_date_end, created_date_before and created_date_after. Useful for finding invoices created within specific time periods or date ranges." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "filter_by_last_modified_time", + "description": "Search invoices modified after a specific time. Filters invoices based on their last modification timestamp. Use YYYY-MM-DDTHH:MM:SS-UTC format. Useful for finding recently updated invoices or syncing data changes. Example : 2023-11-18T02:02:51-0800, 2025-19-19T02:02:51%2B0800", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices modified after a specific time. Filters invoices based on their last modification timestamp. Use YYYY-MM-DDTHH:MM:SS-UTC format. Useful for finding recently updated invoices or syncing data changes. Example : 2023-11-18T02:02:51-0800, 2025-19-19T02:02:51%2B0800" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "invoice_status", + "description": "Search invoices by status. Filters invoices based on their current state in the billing workflow. Allowed values: sent, draft, overdue, paid, void, unpaid, partially_paid and viewed. Useful for finding invoices in specific stages of the billing process.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by status. Filters invoices based on their current state in the billing workflow. Allowed values: sent, draft, overdue, paid, void, unpaid, partially_paid and viewed. Useful for finding invoices in specific stages of the billing process." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "search_by_customer_id", + "description": "Search invoices by customer ID. Filters invoices based on the unique identifier of the customer for whom the invoice was created. Use the customer ID returned by the Contacts API to find all invoices for a specific customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by customer ID. Filters invoices based on the unique identifier of the customer for whom the invoice was created. Use the customer ID returned by the Contacts API to find all invoices for a specific customer." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_invoices_by_criteria", + "description": "Filter invoices by status or payment expected date. Use Status.* for status-based filtering (e.g., Status.Sent, Status.Paid) or Date.PaymentExpectedDate for date-based filtering. Provides advanced filtering options beyond basic search parameters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter invoices by status or payment expected date. Use Status.* for status-based filtering (e.g., Status.Sent, Status.Paid) or Date.PaymentExpectedDate for date-based filtering. Provides advanced filtering options beyond basic search parameters." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "general_search_text", + "description": "Search invoices by invoice number, purchase order, or customer name. This parameter performs a general search across multiple invoice fields. Maximum length is 100 characters. Useful for quick searches when you know part of the invoice information but are unsure which specific field to search.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by invoice number, purchase order, or customer name. This parameter performs a general search across multiple invoice fields. Maximum length is 100 characters. Useful for quick searches when you know part of the invoice information but are unsure which specific field to search." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "description": "Sort invoices by specific column. Allowed values: customer_name, invoice_number, date, due_date, total, balance and created_time. Use this parameter to organize invoice results in a specific order for better data analysis and reporting.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort invoices by specific column. Allowed values: customer_name, invoice_number, date, due_date, total, balance and created_time. Use this parameter to organize invoice results in a specific order for better data analysis and reporting." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "zcrm_potential_id", + "tool_parameter_name": "search_by_crm_potential_id", + "description": "Search invoices by CRM potential ID. This parameter allows you to find invoices associated with a specific deal or opportunity in your Zoho CRM system. Use the potential ID from your CRM to link invoices to sales opportunities and track revenue from specific deals.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by CRM potential ID. This parameter allows you to find invoices associated with a specific deal or opportunity in your Zoho CRM system. Use the potential ID from your CRM to link invoices to sales opportunities and track revenue from specific deals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "response_option", + "tool_parameter_name": "response_format_type", + "description": "To get desired response format. There are 5 formats of responses: 0 (Includes all invoices), 1 (Includes all invoices, the number of invoices, and the sum of their total and balance amounts), 2 (Includes only the number of invoices), 3 (Includes the number of invoices and the sum of their total and balance amounts), and 4 (Includes all invoices and the sum of their total and balance amounts).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To get desired response format. There are 5 formats of responses: 0 (Includes all invoices), 1 (Includes all invoices, the number of invoices, and the sum of their total and balance amounts), 2 (Includes only the number of invoices), 3 (Includes the number of invoices and the sum of their total and balance amounts), and 4 (Includes all invoices and the sum of their total and balance amounts)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched from the paginated results. Default value is 1. Use this parameter along with per_page to navigate through large sets of invoice data. Useful for implementing pagination in your application.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched from the paginated results. Default value is 1. Use this parameter along with per_page to navigate through large sets of invoice data. Useful for implementing pagination in your application." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200. Use this parameter to control the size of each page of results. Maximum value is 200. Useful for optimizing data transfer and improving application performance.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200. Use this parameter to control the size of each page of results. Maximum value is 200. Useful for optimizing data transfer and improving application performance." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoicePayments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoicePayments.json new file mode 100644 index 00000000..fc58b57a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetInvoicePayments.json @@ -0,0 +1,154 @@ +{ + "name": "GetInvoicePayments", + "fully_qualified_name": "ZohoBooksApi.GetInvoicePayments@0.1.0", + "description": "Retrieve a list of payments for a specific invoice.\n\nUse this tool to get detailed information about payments made for a specific invoice by providing the invoice ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to retrieve invoice payments for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to retrieve its payment details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_invoice_payments'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/payments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetJournalDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetJournalDetails.json new file mode 100644 index 00000000..4bf48e3e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetJournalDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetJournalDetails", + "fully_qualified_name": "ZohoBooksApi.GetJournalDetails@0.1.0", + "description": "Retrieve the details of a specific journal entry in Zoho Books.\n\nThis tool retrieves information about a specific journal entry from Zoho Books, using the journal ID. It should be called when details of a journal entry are needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books required to retrieve journal details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "journal_unique_id", + "required": true, + "description": "The unique identifier for the journal to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "journal_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_journal'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/journals/{journal_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "journal_id", + "tool_parameter_name": "journal_unique_id", + "description": "Unique identifier of the journal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetJournalList.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetJournalList.json new file mode 100644 index 00000000..67b430c0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetJournalList.json @@ -0,0 +1,517 @@ +{ + "name": "GetJournalList", + "fully_qualified_name": "ZohoBooksApi.GetJournalList@0.1.0", + "description": "Retrieve a list of accounting journals.\n\nUse this tool to get a list of accounting journals. It's useful for accessing journal entries in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to retrieve journals for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "journal_entry_number", + "required": false, + "description": "Search journals by journal entry number using exact match or variants like 'entry_number_startswith' and 'entry_number_contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal entry number. Variants: entry_number_startswith and entry_number_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "entry_number" + }, + { + "name": "search_by_reference_number", + "required": false, + "description": "Search journals by reference number. Use 'startswith:' or 'contains:' for filtering options.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal reference number. Variants: reference_number_startswith and reference_number_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "journal_date_search", + "required": false, + "description": "Specify date criteria to search journals. Use date_start, date_end, date_before, or date_after.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal date. Variants: date_start, date_end, date_before and date_after" + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "search_journal_notes", + "required": false, + "description": "Search journals by their associated notes. Options: 'startswith' or 'contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal notes. Variants: notes_startswith and notes_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "notes" + }, + { + "name": "search_by_last_modified_time", + "required": false, + "description": "Search for journals using the last modified time as a filter criterion. Provide a valid timestamp to filter entries updated after that time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search the journals using Last Modified Time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "journal_total_filter", + "required": false, + "description": "Filter journals based on total amount using keys like total_less_than or total_greater_equals.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal total. Variants: total_less_than, total_less_equals, total_greater_than and total_greater_equals" + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "search_by_customer_id", + "required": false, + "description": "Use a specific Customer ID to search for journals in Zoho Books.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search Journals using Customer ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "vendor_id", + "required": false, + "description": "Specify the Vendor ID to search journals associated with that vendor.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search the journals using Vendor ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_id" + }, + { + "name": "filter_journals_by_date", + "required": false, + "description": "Specify the time period to filter journals by date. Options: JournalDate.All, JournalDate.Today, JournalDate.ThisWeek, JournalDate.ThisMonth, JournalDate.ThisQuarter, JournalDate.ThisYear.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter journals by journal date. Allowed Values: JournalDate.All, JournalDate.Today, JournalDate.ThisWeek, JournalDate.ThisMonth, JournalDate.ThisQuarter and JournalDate.ThisYear" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "sorting_column_for_journals", + "required": false, + "description": "Specify the field to sort journals by. Options: 'journal_date', 'entry_number', 'reference_number', 'total'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort journal list. Allowed Values: journal_date, entry_number, reference_number and total" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "Page number of the journal list to retrieve. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of journal records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_journals'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/journals", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "entry_number", + "tool_parameter_name": "journal_entry_number", + "description": "Search journals by journal entry number. Variants: entry_number_startswith and entry_number_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal entry number. Variants: entry_number_startswith and entry_number_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "search_by_reference_number", + "description": "Search journals by journal reference number. Variants: reference_number_startswith and reference_number_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal reference number. Variants: reference_number_startswith and reference_number_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "journal_date_search", + "description": "Search journals by journal date. Variants: date_start, date_end, date_before and date_after", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal date. Variants: date_start, date_end, date_before and date_after" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "notes", + "tool_parameter_name": "search_journal_notes", + "description": "Search journals by journal notes. Variants: notes_startswith and notes_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal notes. Variants: notes_startswith and notes_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "search_by_last_modified_time", + "description": "Search the journals using Last Modified Time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search the journals using Last Modified Time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "journal_total_filter", + "description": "Search journals by journal total. Variants: total_less_than, total_less_equals, total_greater_than and total_greater_equals", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search journals by journal total. Variants: total_less_than, total_less_equals, total_greater_than and total_greater_equals" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "search_by_customer_id", + "description": "Search Journals using Customer ID", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search Journals using Customer ID" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_id", + "tool_parameter_name": "vendor_id", + "description": "Search the journals using Vendor ID", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search the journals using Vendor ID" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_journals_by_date", + "description": "Filter journals by journal date. Allowed Values: JournalDate.All, JournalDate.Today, JournalDate.ThisWeek, JournalDate.ThisMonth, JournalDate.ThisQuarter and JournalDate.ThisYear", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter journals by journal date. Allowed Values: JournalDate.All, JournalDate.Today, JournalDate.ThisWeek, JournalDate.ThisMonth, JournalDate.ThisQuarter and JournalDate.ThisYear" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sorting_column_for_journals", + "description": "Sort journal list. Allowed Values: journal_date, entry_number, reference_number and total", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort journal list. Allowed Values: journal_date, entry_number, reference_number and total" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetLastImportedBankStatement.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetLastImportedBankStatement.json new file mode 100644 index 00000000..c693a909 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetLastImportedBankStatement.json @@ -0,0 +1,154 @@ +{ + "name": "GetLastImportedBankStatement", + "fully_qualified_name": "ZohoBooksApi.GetLastImportedBankStatement@0.1.0", + "description": "Retrieve the last imported bank statement details for an account.\n\nUse this tool to get information about the most recently imported bank statement for a specified account. It provides insights into the account's latest financial activities.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization used to retrieve the bank statement.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_id", + "required": true, + "description": "Unique identifier of the bank account for retrieving the last imported statement.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_last_imported_bank_statement'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/{account_id}/statement/lastimported", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "bank_account_id", + "description": "Unique identifier of the bank account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetOpeningBalance.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetOpeningBalance.json new file mode 100644 index 00000000..2bad073f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetOpeningBalance.json @@ -0,0 +1,121 @@ +{ + "name": "GetOpeningBalance", + "fully_qualified_name": "ZohoBooksApi.GetOpeningBalance@0.1.0", + "description": "Retrieves the opening balance for accounts.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to retrieve the opening balance for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_opening_balance'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/openingbalances", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetOrganizationDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetOrganizationDetails.json new file mode 100644 index 00000000..75bf72b0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetOrganizationDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetOrganizationDetails", + "fully_qualified_name": "ZohoBooksApi.GetOrganizationDetails@0.1.0", + "description": "Retrieve details of an organization from Zoho Books.\n\nUse this tool to get comprehensive details about a specific organization in Zoho Books by providing the organization ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization in Zoho Books. Used to retrieve specific organization details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization." + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "org_id", + "required": true, + "description": "Unique identifier for the specific organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization." + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_organization'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/organizations/{organization_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "org_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "organization_id", + "tool_parameter_name": "org_id", + "description": "Unique identifier of the organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetOrganizationUsers.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetOrganizationUsers.json new file mode 100644 index 00000000..329edcf4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetOrganizationUsers.json @@ -0,0 +1,253 @@ +{ + "name": "GetOrganizationUsers", + "fully_qualified_name": "ZohoBooksApi.GetOrganizationUsers@0.1.0", + "description": "Retrieve the list of all users in the organization.\n\nUse this tool to get an updated list of all users within the organization. Ideal for tasks needing user information or management.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to retrieve its users. Provide a valid organization ID as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "user_status_filter", + "required": false, + "description": "Filter users based on their status. Options: Status.All, Status.Active, Status.Inactive, Status.Invited, Status.Deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allowed Values: Status.All, Status.Active, Status.Inactive, Status.Invited and Status.Deleted" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "sort_users_by_column", + "required": false, + "description": "Specify the attribute to sort users by. Allowed values are name, email, user_role, and status.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort users. Allowed Values: name, email, user_role and status" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number", + "required": false, + "description": "Page number to be retrieved, with default being 1. Specify to navigate through pages.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of user records to retrieve per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_users'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/users", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "user_status_filter", + "description": "Allowed Values: Status.All, Status.Active, Status.Inactive, Status.Invited and Status.Deleted", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allowed Values: Status.All, Status.Active, Status.Inactive, Status.Invited and Status.Deleted" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_users_by_column", + "description": "Sort users. Allowed Values: name, email, user_role and status", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort users. Allowed Values: name, email, user_role and status" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetPaymentReminderEmailContent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetPaymentReminderEmailContent.json new file mode 100644 index 00000000..588bf7d3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetPaymentReminderEmailContent.json @@ -0,0 +1,154 @@ +{ + "name": "GetPaymentReminderEmailContent", + "fully_qualified_name": "ZohoBooksApi.GetPaymentReminderEmailContent@0.1.0", + "description": "Fetch the email content of a payment reminder for an invoice.\n\nUse this tool to obtain the email content for a payment reminder associated with a specific invoice. Ideal for scenarios where you need to preview or edit reminder emails before sending.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID for the organization within Zoho Books for which the payment reminder email content is being fetched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier for the specific invoice to fetch the reminder email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_payment_reminder_mail_content_for_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/paymentreminder", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectComments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectComments.json new file mode 100644 index 00000000..7d4471d7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectComments.json @@ -0,0 +1,154 @@ +{ + "name": "GetProjectComments", + "fully_qualified_name": "ZohoBooksApi.GetProjectComments@0.1.0", + "description": "Retrieve comments for a specified project.\n\nUse this tool to get detailed comments for a specified project by providing the project ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization to fetch project comments for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "Unique identifier of the project to fetch comments for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_project_comments'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectDetails.json new file mode 100644 index 00000000..2f427afd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetProjectDetails", + "fully_qualified_name": "ZohoBooksApi.GetProjectDetails@0.1.0", + "description": "Retrieve detailed information of a specific project by ID.\n\nCall this tool to fetch details about a specific project using its ID. Useful for obtaining comprehensive project information.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization to retrieve project details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_unique_identifier", + "required": true, + "description": "Unique identifier for the project to retrieve detailed information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_project'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_unique_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectTasks.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectTasks.json new file mode 100644 index 00000000..4a6c2cd5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectTasks.json @@ -0,0 +1,220 @@ +{ + "name": "GetProjectTasks", + "fully_qualified_name": "ZohoBooksApi.GetProjectTasks@0.1.0", + "description": "Retrieve a list of tasks for a specified project.\n\nUse this tool to obtain a list of tasks added to a specific project in Zoho Books. It should be called when you need detailed task information for project management or oversight.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. This is required to specify which organization's project tasks to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_unique_id", + "required": true, + "description": "Unique identifier for the project to fetch tasks.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "fetch_page_number", + "required": false, + "description": "The page number of results to retrieve. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify the number of task records to fetch per page. Defaults to 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_tasks'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/tasks", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "fetch_page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_unique_id", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectUserDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectUserDetails.json new file mode 100644 index 00000000..a85493d8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetProjectUserDetails.json @@ -0,0 +1,187 @@ +{ + "name": "GetProjectUserDetails", + "fully_qualified_name": "ZohoBooksApi.GetProjectUserDetails@0.1.0", + "description": "Fetch details of a user within a project in Zoho Books.\n\nUse this tool to obtain information about a specific user's involvement in a particular project in Zoho Books. It is ideal for checking user roles or assignments within a project.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is required to fetch the user details associated with the specified project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "The unique identifier for the project in Zoho Books to fetch user details from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "user_identifier", + "required": true, + "description": "Unique identifier of the user within the project. Required to fetch user-specific details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_project_user'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/users/{user_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "Unique identifier of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetPurchaseOrderComments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetPurchaseOrderComments.json new file mode 100644 index 00000000..f354357f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetPurchaseOrderComments.json @@ -0,0 +1,154 @@ +{ + "name": "GetPurchaseOrderComments", + "fully_qualified_name": "ZohoBooksApi.GetPurchaseOrderComments@0.1.0", + "description": "Retrieve comments and history of a purchase order.\n\nFetches the complete history and comments of a specified purchase order, useful for tracking and reviewing order details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization to retrieve purchase order comments for. Required to specify which organization's data to access.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "Unique identifier for the specific purchase order to retrieve comments and history.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_purchase_order_comments'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetPurchaseOrderEmailContent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetPurchaseOrderEmailContent.json new file mode 100644 index 00000000..e4d61393 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetPurchaseOrderEmailContent.json @@ -0,0 +1,187 @@ +{ + "name": "GetPurchaseOrderEmailContent", + "fully_qualified_name": "ZohoBooksApi.GetPurchaseOrderEmailContent@0.1.0", + "description": "Retrieves the email content of a purchase order.\n\nUse this tool to get the email content related to a specific purchase order by providing its ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization to retrieve the purchase order email content for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "Unique identifier of the purchase order to retrieve its email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "email_template_id", + "required": false, + "description": "Get the email content based on a specific email template. Defaults to customer-associated or default template if not provided.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "inferrable": true, + "http_endpoint_parameter_name": "email_template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_purchase_order_email'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/email", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "email_template_id", + "tool_parameter_name": "email_template_id", + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetPurchaseOrderTemplates.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetPurchaseOrderTemplates.json new file mode 100644 index 00000000..c92e2ba2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetPurchaseOrderTemplates.json @@ -0,0 +1,121 @@ +{ + "name": "GetPurchaseOrderTemplates", + "fully_qualified_name": "ZohoBooksApi.GetPurchaseOrderTemplates@0.1.0", + "description": "Retrieve all purchase order PDF templates from Zoho Books.\n\nThis tool is used to obtain a list of all available purchase order PDF templates in Zoho Books. It should be called when there's a need to view or select from existing purchase order templates.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization for retrieving purchase order templates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_purchase_order_templates'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/templates", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringBillDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringBillDetails.json new file mode 100644 index 00000000..52e988e2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringBillDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetRecurringBillDetails", + "fully_qualified_name": "ZohoBooksApi.GetRecurringBillDetails@0.1.0", + "description": "Retrieve details of a recurring bill from Zoho Books.\n\nThis tool retrieves comprehensive details of a specified recurring bill using its ID. It should be called when detailed information about a recurring bill is required from Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_bill_unique_id", + "required": true, + "description": "Unique identifier for the recurring bill in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_recurring_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurring_bills/{recurring_bill_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_bill_id", + "tool_parameter_name": "recurring_bill_unique_id", + "description": "Unique identifier of the recurring bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringBillHistory.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringBillHistory.json new file mode 100644 index 00000000..d09281af --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringBillHistory.json @@ -0,0 +1,154 @@ +{ + "name": "GetRecurringBillHistory", + "fully_qualified_name": "ZohoBooksApi.GetRecurringBillHistory@0.1.0", + "description": "Get history and comments of a recurring bill.\n\nUse this tool to fetch detailed history and comments related to a specific recurring bill by providing the recurring bill ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which you want to get the recurring bill history.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_bill_identifier", + "required": true, + "description": "Unique identifier for the specific recurring bill. Required to fetch its history and comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_recurring_bill_history'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringbills/{recurring_bill_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_bill_id", + "tool_parameter_name": "recurring_bill_identifier", + "description": "Unique identifier of the recurring bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringExpenseDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringExpenseDetails.json new file mode 100644 index 00000000..83d682a6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringExpenseDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetRecurringExpenseDetails", + "fully_qualified_name": "ZohoBooksApi.GetRecurringExpenseDetails@0.1.0", + "description": "Get details of a specific recurring expense in Zoho Books.\n\nUse this tool to retrieve information about a particular recurring expense by providing its ID. Helpful for managing or reviewing ongoing expense details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization to retrieve its specific recurring expense details from Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_expense_id", + "required": true, + "description": "Unique identifier for the recurring expense to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_recurring_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_expense_id", + "tool_parameter_name": "recurring_expense_id", + "description": "Unique identifier of the recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringExpenseHistory.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringExpenseHistory.json new file mode 100644 index 00000000..4353754d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringExpenseHistory.json @@ -0,0 +1,154 @@ +{ + "name": "GetRecurringExpenseHistory", + "fully_qualified_name": "ZohoBooksApi.GetRecurringExpenseHistory@0.1.0", + "description": "Get history and comments of a recurring expense.\n\nUse this tool to retrieve the history and comments associated with a specific recurring expense in Zoho Books. Call this tool when you need detailed information about past actions and notes on a recurring expense item.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the recurring expense history is requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_expense_id", + "required": true, + "description": "Unique identifier for the specific recurring expense to retrieve history and comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_recurring_expense_history'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_expense_id", + "tool_parameter_name": "recurring_expense_id", + "description": "Unique identifier of the recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringInvoiceDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringInvoiceDetails.json new file mode 100644 index 00000000..01218b24 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringInvoiceDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetRecurringInvoiceDetails", + "fully_qualified_name": "ZohoBooksApi.GetRecurringInvoiceDetails@0.1.0", + "description": "Retrieve details of a specific recurring invoice.\n\nUse this tool to access detailed information about a recurring invoice using its ID. It's useful for financial tracking and management purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to access organization-specific data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_invoice_identifier", + "required": true, + "description": "Unique identifier for the recurring invoice to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_recurring_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_invoice_id", + "tool_parameter_name": "recurring_invoice_identifier", + "description": "Unique identifier of the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringInvoiceHistory.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringInvoiceHistory.json new file mode 100644 index 00000000..57636ce8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRecurringInvoiceHistory.json @@ -0,0 +1,154 @@ +{ + "name": "GetRecurringInvoiceHistory", + "fully_qualified_name": "ZohoBooksApi.GetRecurringInvoiceHistory@0.1.0", + "description": "Get the complete history and comments of a recurring invoice.\n\nUse this tool to retrieve detailed history and comment logs for a specific recurring invoice. Ideal for reviewing past transactions and communication related to an invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization. Required to access invoice history.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_invoice_id", + "required": true, + "description": "Unique identifier for the specific recurring invoice to retrieve its history and comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_recurring_invoice_history'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_invoice_id", + "tool_parameter_name": "recurring_invoice_id", + "description": "Unique identifier of the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceAttachment.json new file mode 100644 index 00000000..4e2bf475 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceAttachment.json @@ -0,0 +1,154 @@ +{ + "name": "GetRetainerInvoiceAttachment", + "fully_qualified_name": "ZohoBooksApi.GetRetainerInvoiceAttachment@0.1.0", + "description": "Retrieve the file attached to a retainer invoice.\n\nUse this tool to get the file that has been attached to a specific retainer invoice. It is helpful when you need to view or download the attached document related to the invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose invoice attachment you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice for which the attachment is to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_retainer_invoice_attachment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/attachment", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceDetails.json new file mode 100644 index 00000000..afe02f05 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetRetainerInvoiceDetails", + "fully_qualified_name": "ZohoBooksApi.GetRetainerInvoiceDetails@0.1.0", + "description": "Retrieve details of a specific retainer invoice.\n\nUse this tool to obtain details about a retainer invoice by specifying the invoice ID. Ideal for checking invoice status, amount, and related information.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization to retrieve the retainer invoice for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_retainer_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceHistory.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceHistory.json new file mode 100644 index 00000000..16bf4517 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceHistory.json @@ -0,0 +1,154 @@ +{ + "name": "GetRetainerInvoiceHistory", + "fully_qualified_name": "ZohoBooksApi.GetRetainerInvoiceHistory@0.1.0", + "description": "Get the history and comments of a retainer invoice.\n\nFetches complete history and comments for a specific retainer invoice by ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to fetch its retainer invoice history.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to look up its history and comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_retainer_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceTemplates.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceTemplates.json new file mode 100644 index 00000000..c5f474e8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetRetainerInvoiceTemplates.json @@ -0,0 +1,121 @@ +{ + "name": "GetRetainerInvoiceTemplates", + "fully_qualified_name": "ZohoBooksApi.GetRetainerInvoiceTemplates@0.1.0", + "description": "Retrieve all retainer invoice PDF templates.\n\nCall this tool to get a list of all available retainer invoice PDF templates from Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to retrieve retainer invoice templates from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_retainer_invoice_templates'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/templates", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderAttachment.json new file mode 100644 index 00000000..3e1c1a49 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderAttachment.json @@ -0,0 +1,220 @@ +{ + "name": "GetSalesOrderAttachment", + "fully_qualified_name": "ZohoBooksApi.GetSalesOrderAttachment@0.1.0", + "description": "Retrieve the file attached to a specific sales order.\n\nUse this tool to get the file attached to a sales order in Zoho Books by providing the sales order ID. It returns the file associated with the specified order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to retrieve the attachment for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "require_preview_of_sales_order", + "required": false, + "description": "Specify whether a preview of the Sales Order is required. Use True for preview, False for no preview.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if preview of the Sales Order is required" + }, + "inferrable": true, + "http_endpoint_parameter_name": "preview" + }, + { + "name": "require_inline_response", + "required": false, + "description": "Set to true if an inline response is needed, displaying directly in the browser.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if inline response is required" + }, + "inferrable": true, + "http_endpoint_parameter_name": "inline" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_sales_order_attachment'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/attachment", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "preview", + "tool_parameter_name": "require_preview_of_sales_order", + "description": "Check if preview of the Sales Order is required", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if preview of the Sales Order is required" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "inline", + "tool_parameter_name": "require_inline_response", + "description": "Check if inline response is required", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if inline response is required" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderComments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderComments.json new file mode 100644 index 00000000..ec0a9e5c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderComments.json @@ -0,0 +1,154 @@ +{ + "name": "GetSalesOrderComments", + "fully_qualified_name": "ZohoBooksApi.GetSalesOrderComments@0.1.0", + "description": "Retrieve the history and comments of a sales order.\n\nUse this tool to obtain all comments and the complete history associated with a specific sales order when needing detailed insights or updates.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which to retrieve sales order comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to retrieve comments and history for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_sales_order_comments'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderDetails.json new file mode 100644 index 00000000..c2849b1c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderDetails.json @@ -0,0 +1,220 @@ +{ + "name": "GetSalesOrderDetails", + "fully_qualified_name": "ZohoBooksApi.GetSalesOrderDetails@0.1.0", + "description": "Retrieve details of a specific sales order.\n\nThis tool is used to get the details of a sales order from Zoho Books. It should be called when there's a need to look up information about a particular sales order, such as for verification or record-keeping purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. This ID is used to specify the organization within Zoho Books whose sales order details need to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order required to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "output_format", + "required": false, + "description": "Specifies the format in which to receive the sales order details. Options include: json, csv, xml, xls, xlsx, pdf, jhtml, and html. Default is json.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular sales order in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, csv , xml, xls, xlsx, pdf, jhtml and html." + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + }, + { + "name": "print_pdf", + "required": false, + "description": "Set to true to print the exported PDF of the sales order, otherwise false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_sales_order'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "print_pdf", + "description": "Print the exported pdf.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "output_format", + "description": "Get the details of a particular sales order in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, csv , xml, xls, xlsx, pdf, jhtml and html.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular sales order in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, csv , xml, xls, xlsx, pdf, jhtml and html." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderEmailContent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderEmailContent.json new file mode 100644 index 00000000..a493404e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderEmailContent.json @@ -0,0 +1,187 @@ +{ + "name": "GetSalesOrderEmailContent", + "fully_qualified_name": "ZohoBooksApi.GetSalesOrderEmailContent@0.1.0", + "description": "Retrieve email content for a specific sales order.\n\nThis tool is used to get the email content associated with a particular sales order, identified by its sales order ID. Use it when you need to view or analyze the email details of a sales order in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books for which the sales order email content is required.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to retrieve its email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "email_template_id", + "required": false, + "description": "Optional. ID of the email template for retrieving specific email content. If not provided, defaults will be used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "inferrable": true, + "http_endpoint_parameter_name": "email_template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_sales_order_email'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/email", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "email_template_id", + "tool_parameter_name": "email_template_id", + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the customer. If no template is associated with the customer, then default template will be used." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderTemplates.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderTemplates.json new file mode 100644 index 00000000..558419d2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesOrderTemplates.json @@ -0,0 +1,121 @@ +{ + "name": "GetSalesOrderTemplates", + "fully_qualified_name": "ZohoBooksApi.GetSalesOrderTemplates@0.1.0", + "description": "Retrieve all sales order PDF templates from Zoho Books.\n\nUse this tool to get a list of all available sales order PDF templates in Zoho Books. This is helpful when you need to view or manage your sales order templates.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "A string representing the ID of the organization. Required to specify which organization's sales order templates to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_sales_order_templates'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/templates", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesReceiptDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesReceiptDetails.json new file mode 100644 index 00000000..5cf823ab --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetSalesReceiptDetails.json @@ -0,0 +1,187 @@ +{ + "name": "GetSalesReceiptDetails", + "fully_qualified_name": "ZohoBooksApi.GetSalesReceiptDetails@0.1.0", + "description": "Retrieve the details of a sales receipt.\n\nThis tool fetches the specific details of a sales receipt using the provided sales receipt ID. It should be called when detailed information about a particular sales receipt is needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization for which the sales receipt is being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_receipt_id", + "required": true, + "description": "The unique identifier for the sales receipt to be retrieved. Required for fetching the specific sales receipt details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sales_receipt_id" + }, + { + "name": "output_format", + "required": false, + "description": "Specifies the format in which to retrieve the sales receipt details. Options are 'json', 'pdf', or 'html'. Default is 'json'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular sales receipt in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, pdf, html." + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_sales_receipt'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesreceipts/{sales_receipt_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "output_format", + "description": "Get the details of a particular sales receipt in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, pdf, html.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular sales receipt in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, pdf, html." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sales_receipt_id", + "tool_parameter_name": "sales_receipt_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_books_api/arcade_zoho_books_api/wrapper_tools/GetTaskDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaskDetails.json new file mode 100644 index 00000000..6b790772 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaskDetails.json @@ -0,0 +1,187 @@ +{ + "name": "GetTaskDetails", + "fully_qualified_name": "ZohoBooksApi.GetTaskDetails@0.1.0", + "description": "Retrieve detailed information about a specific task in a project.\n\nThis tool should be called to obtain comprehensive details about a particular task within a project. It helps in understanding task specifics by providing relevant task data from Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_id", + "required": true, + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "task_unique_identifier", + "required": true, + "description": "The unique identifier for the task to retrieve details for from Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the task." + }, + "inferrable": true, + "http_endpoint_parameter_name": "task_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_task'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/tasks/{task_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_id", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "task_id", + "tool_parameter_name": "task_unique_identifier", + "description": "Unique identifier of the task.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the task." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxAuthorities.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxAuthorities.json new file mode 100644 index 00000000..16e29b70 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxAuthorities.json @@ -0,0 +1,121 @@ +{ + "name": "GetTaxAuthorities", + "fully_qualified_name": "ZohoBooksApi.GetTaxAuthorities@0.1.0", + "description": "Retrieve the list of tax authorities.\n\nUse this tool to obtain a list of all tax authorities, which can be helpful for managing tax-related settings or compliance.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which to retrieve tax authorities.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_tax_authorities'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxauthorities", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxAuthorityDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxAuthorityDetails.json new file mode 100644 index 00000000..8e2c57bd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxAuthorityDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetTaxAuthorityDetails", + "fully_qualified_name": "ZohoBooksApi.GetTaxAuthorityDetails@0.1.0", + "description": "Retrieve details of a specific tax authority.\n\nUse this tool to obtain information about a tax authority by providing its unique ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization to retrieve tax authority details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_authority_unique_id", + "required": true, + "description": "Unique identifier of the tax authority to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax authority." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_authority_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_tax_authority'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxauthorities/{tax_authority_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_authority_id", + "tool_parameter_name": "tax_authority_unique_id", + "description": "Unique identifier of the tax authority.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax authority." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxDetails.json new file mode 100644 index 00000000..3f24cca7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetTaxDetails", + "fully_qualified_name": "ZohoBooksApi.GetTaxDetails@0.1.0", + "description": "Retrieve the details of a specific tax.\n\nUse this tool to obtain information about a specific simple or compound tax by providing the tax ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization to retrieve tax details from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_identifier", + "required": true, + "description": "Unique identifier for retrieving specific tax details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_tax'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxes/{tax_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_id", + "tool_parameter_name": "tax_identifier", + "description": "Unique identifier of the tax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxExemptionDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxExemptionDetails.json new file mode 100644 index 00000000..6bc259ec --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxExemptionDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetTaxExemptionDetails", + "fully_qualified_name": "ZohoBooksApi.GetTaxExemptionDetails@0.1.0", + "description": "Retrieve the details of a tax exemption using its ID.\n\nThis tool retrieves details about a specific tax exemption identified by its ID. It is useful for understanding exemption specifics within financial settings.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to access the organization's tax exemption details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_exemption_identifier", + "required": true, + "description": "The unique identifier for the tax exemption to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax exemption." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_exemption_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_tax_exemption'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxexemptions/{tax_exemption_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_exemption_id", + "tool_parameter_name": "tax_exemption_identifier", + "description": "Unique identifier of the tax exemption.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax exemption." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxExemptionsList.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxExemptionsList.json new file mode 100644 index 00000000..c50ffe03 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTaxExemptionsList.json @@ -0,0 +1,121 @@ +{ + "name": "GetTaxExemptionsList", + "fully_qualified_name": "ZohoBooksApi.GetTaxExemptionsList@0.1.0", + "description": "Retrieve a list of tax exemptions from Zoho Books.\n\nCall this tool to get information about the current tax exemptions available in Zoho Books. It provides details on all tax exemptions configured in the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization whose tax exemptions are being requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_tax_exemptions'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxexemptions", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetTimeEntryDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTimeEntryDetails.json new file mode 100644 index 00000000..ff6b7b84 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetTimeEntryDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetTimeEntryDetails", + "fully_qualified_name": "ZohoBooksApi.GetTimeEntryDetails@0.1.0", + "description": "Retrieve details of a specific time entry.\n\nUse this tool to get detailed information about a specific time entry by providing the time entry ID. It's useful for tracking and managing project time entries.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the time entry details are requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "time_entry_identifier", + "required": true, + "description": "Unique identifier of the time entry to retrieve details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the time entry." + }, + "inferrable": true, + "http_endpoint_parameter_name": "time_entry_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_time_entry'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/timeentries/{time_entry_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "time_entry_id", + "tool_parameter_name": "time_entry_identifier", + "description": "Unique identifier of the time entry.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the time entry." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetUserDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetUserDetails.json new file mode 100644 index 00000000..6835d0b8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetUserDetails.json @@ -0,0 +1,154 @@ +{ + "name": "GetUserDetails", + "fully_qualified_name": "ZohoBooksApi.GetUserDetails@0.1.0", + "description": "Retrieve detailed information about a specific user in Zoho Books.\n\nThis tool fetches the details of a user from Zoho Books using their user ID. It should be called when user information such as name, email, or role is required.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is required to specify the organization context for API calls.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "user_unique_identifier", + "required": true, + "description": "A unique string that identifies the user in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_user'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/users/{user_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_unique_identifier", + "description": "Unique identifier of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorCreditComments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorCreditComments.json new file mode 100644 index 00000000..6c260b24 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorCreditComments.json @@ -0,0 +1,154 @@ +{ + "name": "GetVendorCreditComments", + "fully_qualified_name": "ZohoBooksApi.GetVendorCreditComments@0.1.0", + "description": "Retrieve history and comments for a vendor credit.\n\nUse this tool to get the history and comments associated with a specific vendor credit by providing the vendor credit ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization. This ID is required to access the vendor credit comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "The unique identifier for the specific vendor credit to retrieve its history and comments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_vendor_credit_comments'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/comments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorCreditDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorCreditDetails.json new file mode 100644 index 00000000..d2d444c0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorCreditDetails.json @@ -0,0 +1,220 @@ +{ + "name": "GetVendorCreditDetails", + "fully_qualified_name": "ZohoBooksApi.GetVendorCreditDetails@0.1.0", + "description": "Retrieve details of a specific vendor credit.\n\nUse this tool to obtain detailed information about a vendor credit by providing the specific vendor credit ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose vendor credit details are being requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_id", + "required": true, + "description": "Unique identifier for the vendor credit to retrieve details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "output_format", + "required": false, + "description": "Specify the format for vendor credit details. Options: json, xml, csv, xls, pdf, html, jhtml. Default is html.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "You can get vendor credit details as json/pdf/html. Default format is html. Allowed Values: json, xml, csv, xls, pdf, html and jhtml." + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + }, + { + "name": "export_vendor_credit_pdf", + "required": false, + "description": "Set to true to export the vendor credit as a PDF with default print options. Accepts 'true', 'false', 'on', 'off'.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Export vendor credit pdf with default print option. Allowed Values: true, false, on and off." + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_vendor_credit'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "export_vendor_credit_pdf", + "description": "Export vendor credit pdf with default print option. Allowed Values: true, false, on and off.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Export vendor credit pdf with default print option. Allowed Values: true, false, on and off." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "output_format", + "description": "You can get vendor credit details as json/pdf/html. Default format is html. Allowed Values: json, xml, csv, xls, pdf, html and jhtml.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "You can get vendor credit details as json/pdf/html. Default format is html. Allowed Values: json, xml, csv, xls, pdf, html and jhtml." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_id", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorCreditRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorCreditRefund.json new file mode 100644 index 00000000..2208c7ba --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorCreditRefund.json @@ -0,0 +1,187 @@ +{ + "name": "GetVendorCreditRefund", + "fully_qualified_name": "ZohoBooksApi.GetVendorCreditRefund@0.1.0", + "description": "Retrieve a refund for a specific vendor credit.\n\nFetches details of a refund associated with a specific vendor credit using the vendor credit ID and refund ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization to which the vendor credit belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier for the vendor credit to retrieve the refund details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "vendor_credit_refund_id", + "required": true, + "description": "Unique identifier of the vendor credit refund for the specific transaction. Required to retrieve refund details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_refund_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_vendor_credit_refund'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds/{vendor_credit_refund_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_refund_id", + "tool_parameter_name": "vendor_credit_refund_id", + "description": "Unique identifier of the vendor credit refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit refund." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorPaymentEmailContent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorPaymentEmailContent.json new file mode 100644 index 00000000..3e4be5e7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorPaymentEmailContent.json @@ -0,0 +1,154 @@ +{ + "name": "GetVendorPaymentEmailContent", + "fully_qualified_name": "ZohoBooksApi.GetVendorPaymentEmailContent@0.1.0", + "description": "Retrieve email content for a vendor payment receipt.\n\nThis tool retrieves the pre-filled email details for a vendor payment, including the message subject, body, recipients, sender, and attachments. Use it to easily compose and send a payment receipt email to vendors.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to retrieve the vendor payment email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_payment_id", + "required": true, + "description": "Unique identifier for the vendor payment to retrieve email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_vendor_payment_email_content'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}/email", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "vendor_payment_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_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorPaymentRefundDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorPaymentRefundDetails.json new file mode 100644 index 00000000..afae964c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/GetVendorPaymentRefundDetails.json @@ -0,0 +1,187 @@ +{ + "name": "GetVendorPaymentRefundDetails", + "fully_qualified_name": "ZohoBooksApi.GetVendorPaymentRefundDetails@0.1.0", + "description": "Retrieve details of a specific vendor payment refund.\n\nUse this tool to obtain information about a particular refund of a vendor payment, identified by the payment ID and refund ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization whose vendor payment refund details are requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_identifier", + "required": true, + "description": "Unique identifier for the payment associated with the vendor refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "vendor_payment_refund_id", + "required": true, + "description": "Unique identifier for the vendor payment refund to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor payment refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendorpayment_refund_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_vendor_payment_refund'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds/{vendorpayment_refund_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_identifier", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendorpayment_refund_id", + "tool_parameter_name": "vendor_payment_refund_id", + "description": "Unique identifier of the vendor payment refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor payment refund." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ImportBankStatements.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ImportBankStatements.json new file mode 100644 index 00000000..e60a71c0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ImportBankStatements.json @@ -0,0 +1,330 @@ +{ + "name": "ImportBankStatements", + "fully_qualified_name": "ZohoBooksApi.ImportBankStatements@0.1.0", + "description": "Import bank or credit card feeds into your account.\n\nUse this tool to import bank or credit card statements directly into your account for seamless financial management. This should be called when you need to process new bank or credit card data into the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to import bank statements for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_statements_data", + "required": false, + "description": "JSON containing bank/credit card data, including account ID, date range, and transactions.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bank/Credit Card account" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Least date in the transaction set" + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Greatest date in the transaction set" + }, + "transactions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "transaction_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID that is specific to the transaction" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the transaction" + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if transaction is Debit or Credit" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount involved in the transaction" + }, + "payee": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payee involved in the transaction" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction description" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'import_bank_statements'.", + "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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankstatements", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bank_statements_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bank/Credit Card account" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Least date in the transaction set" + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Greatest date in the transaction set" + }, + "transactions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "transaction_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID that is specific to the transaction" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the transaction" + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if transaction is Debit or Credit" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount involved in the transaction" + }, + "payee": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payee involved in the transaction" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction description" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + } + }, + "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 \"required\": [\n \"account_id\",\n \"transactions\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"account_id\": {\n \"description\": \"ID of the Bank/Credit Card account\",\n \"type\": \"string\",\n \"example\": \"460000000050127\"\n },\n \"start_date\": {\n \"description\": \"Least date in the transaction set\",\n \"type\": \"string\",\n \"example\": \"2019-01-01\"\n },\n \"end_date\": {\n \"description\": \"Greatest date in the transaction set\",\n \"type\": \"string\",\n \"example\": \"2019-01-02\"\n },\n \"transactions\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"date\",\n \"debit_or_credit\",\n \"amount\"\n ],\n \"properties\": {\n \"transaction_id\": {\n \"description\": \"Unique ID that is specific to the transaction\",\n \"type\": \"string\",\n \"example\": \"XXXXSCD01\"\n },\n \"date\": {\n \"description\": \"Date of the transaction\",\n \"type\": \"string\",\n \"example\": \"2012-01-14\"\n },\n \"debit_or_credit\": {\n \"description\": \"Indicates if transaction is Debit or Credit\",\n \"type\": \"string\",\n \"example\": \"credit\"\n },\n \"amount\": {\n \"description\": \"Amount involved in the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 7500\n },\n \"payee\": {\n \"description\": \"Payee involved in the transaction\",\n \"type\": \"string\",\n \"example\": \"Bowman and Co\"\n },\n \"description\": {\n \"description\": \"Transaction description\",\n \"type\": \"string\",\n \"example\": \"Electronics purchase\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-2134\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ImportCrmProductToZohoBooks.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ImportCrmProductToZohoBooks.json new file mode 100644 index 00000000..26c7fe28 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ImportCrmProductToZohoBooks.json @@ -0,0 +1,154 @@ +{ + "name": "ImportCrmProductToZohoBooks", + "fully_qualified_name": "ZohoBooksApi.ImportCrmProductToZohoBooks@0.1.0", + "description": "Import a product from Zoho CRM to Zoho Books.\n\nUse this tool to import an item from Zoho CRM into Zoho Books by specifying its CRM product ID. This enables synchronization of product data between the two services.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books. This is required to import products from Zoho CRM.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "crm_product_id", + "required": true, + "description": "Unique identifier of the Zoho CRM product to be imported into Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the zoho crm product." + }, + "inferrable": true, + "http_endpoint_parameter_name": "crm_product_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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/crm/item/{crm_product_id}/import", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "crm_product_id", + "tool_parameter_name": "crm_product_id", + "description": "Unique identifier of the zoho crm product.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the zoho crm product." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ImportCustomerFromCrm.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ImportCustomerFromCrm.json new file mode 100644 index 00000000..5e75fd52 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ImportCustomerFromCrm.json @@ -0,0 +1,154 @@ +{ + "name": "ImportCustomerFromCrm", + "fully_qualified_name": "ZohoBooksApi.ImportCustomerFromCrm@0.1.0", + "description": "Import a customer from Zoho CRM to Zoho Books using CRM account ID.\n\nUse this tool to import a customer from Zoho CRM into Zoho Books by providing the CRM account ID. This requires integration between Zoho Books and Zoho CRM either through Accounts and Contacts sync or Accounts only sync.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "crm_account_id", + "required": true, + "description": "Unique identifier of the Zoho CRM account to import the customer from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the zoho crm account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "crm_account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'import_customer_using_crm_account_id'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/crm/account/{crm_account_id}/import", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "crm_account_id", + "tool_parameter_name": "crm_account_id", + "description": "Unique identifier of the zoho crm account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the zoho crm account." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ImportVendorFromCrm.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ImportVendorFromCrm.json new file mode 100644 index 00000000..c0aae7df --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ImportVendorFromCrm.json @@ -0,0 +1,154 @@ +{ + "name": "ImportVendorFromCrm", + "fully_qualified_name": "ZohoBooksApi.ImportVendorFromCrm@0.1.0", + "description": "Import a vendor from Zoho CRM to Zoho Books using CRM vendor ID.\n\nUse this tool to import a vendor from Zoho CRM to Zoho Books via Vendor-only sync, requiring the CRM vendor ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books for which the vendor is being imported. This ID is used to specify the target organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "zoho_crm_vendor_id", + "required": true, + "description": "Unique identifier of the Zoho CRM vendor to import.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the zoho crm vendor." + }, + "inferrable": true, + "http_endpoint_parameter_name": "crm_vendor_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'import_vendor_using_crm_vendor_id'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/crm/vendor/{crm_vendor_id}/import", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "crm_vendor_id", + "tool_parameter_name": "zoho_crm_vendor_id", + "description": "Unique identifier of the zoho crm vendor.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the zoho crm vendor." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/InviteUserToProject.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/InviteUserToProject.json new file mode 100644 index 00000000..d668cc12 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/InviteUserToProject.json @@ -0,0 +1,285 @@ +{ + "name": "InviteUserToProject", + "fully_qualified_name": "ZohoBooksApi.InviteUserToProject@0.1.0", + "description": "Invite a user to a project in Zoho Books.\n\nUse this tool to send an invitation to a user to join a specific project in Zoho Books. This is helpful when you need to collaborate with others by adding them to project teams.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books where the project is located.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_unique_identifier", + "required": true, + "description": "Unique identifier of the project in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "user_invitation_details", + "required": false, + "description": "JSON object with details to invite a user: user's name (max 200 chars), email (max 100 chars), role (staff, admin, or timesheetstaff), hourly rate, budget hours, and cost rate.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email of the user. Max-length [100]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours." + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'invite_project_user'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/users/invite", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_unique_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "user_invitation_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email of the user. Max-length [100]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours." + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "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 \"required\": [\n \"user_name\",\n \"email\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"user_name\": {\n \"description\": \"Name of the user. Max-length [200]\",\n \"type\": \"string\",\n \"example\": \"John David\"\n },\n \"email\": {\n \"description\": \"Email of the user. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"johndavid@zilliuminc.com\"\n },\n \"user_role\": {\n \"description\": \"Role to be assigned. Allowed Values: staff, admin and timesheetstaff\",\n \"type\": \"string\",\n \"example\": \"admin\"\n },\n \"rate\": {\n \"description\": \"Hourly rate for a task.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours.\",\n \"type\": \"string\",\n \"example\": \"0\"\n },\n \"cost_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \"10.00\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListAccountTransactions.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListAccountTransactions.json new file mode 100644 index 00000000..a5926911 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListAccountTransactions.json @@ -0,0 +1,385 @@ +{ + "name": "ListAccountTransactions", + "fully_qualified_name": "ZohoBooksApi.ListAccountTransactions@0.1.0", + "description": "Retrieve transactions for a specified account.\n\nUse this tool to list all transactions associated with a given account. Ideal for tracking financial activities related to specific accounts.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization whose account transactions are being queried.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_id", + "required": true, + "description": "The unique ID of the account to retrieve transactions for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Account" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "transaction_date_range", + "required": false, + "description": "Specify a date range for searching transactions. Use 'yyyy-mm-dd' format. Supports 'date.start', 'date.end', 'date.before', and 'date.after'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search account transactions with the given date range. Default date format is yyyy-mm-dd. Variants: date.start, date.end, date.before and date.after." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "amount_range", + "required": false, + "description": "Specify the amount range to filter account transactions. Use fields like less_than, less_equals, greater_than, and greater_equals to define the criteria.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search account transactions with given amount range. Variants: amount.less_than, amount.less_equals, amount.greater_than and amount.greater_equals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "amount" + }, + { + "name": "filter_by_account_type", + "required": false, + "description": "Filter accounts based on account type and status. Options: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income, AccountType.Expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter accounts based on its account type and status. Allowed Values: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income and AccountType.Expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "transaction_type", + "required": false, + "description": "Filter transactions by type, such as 'invoice', 'expense', or 'refund'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search transactions based on the given transaction type. Allowed Values: invoice, customer_payment, bills, vendor_payment, credit_notes, creditnote_refund, expense, card_payment, purchase_or_charges, journal, deposit, refund, transfer_fund, base_currency_adjustment, opening_balance, sales_without_invoices, expense_refund, tax_refund, receipt_from_initial_debtors, owner_contribution, interest_income, other_income, owner_drawings and payment_to_initial_creditors." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_type" + }, + { + "name": "sort_by", + "required": false, + "description": "Specify the column to sort transactions. Possible values: 'account_name', 'account_type'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort accounts. Allowed Values: account_name and account_type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number", + "required": false, + "description": "Page number to be fetched for the transaction list. Defaults to 1 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to be fetched per page. Default is 200. Specify a custom integer to override.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_chart_of_account_transactions'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/chartofaccounts/transactions", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_id", + "description": "ID of the Account", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Account" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "transaction_date_range", + "description": "Search account transactions with the given date range. Default date format is yyyy-mm-dd. Variants: date.start, date.end, date.before and date.after.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search account transactions with the given date range. Default date format is yyyy-mm-dd. Variants: date.start, date.end, date.before and date.after." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "amount", + "tool_parameter_name": "amount_range", + "description": "Search account transactions with given amount range. Variants: amount.less_than, amount.less_equals, amount.greater_than and amount.greater_equals.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search account transactions with given amount range. Variants: amount.less_than, amount.less_equals, amount.greater_than and amount.greater_equals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_by_account_type", + "description": "Filter accounts based on its account type and status. Allowed Values: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income and AccountType.Expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter accounts based on its account type and status. Allowed Values: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income and AccountType.Expense." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_type", + "tool_parameter_name": "transaction_type", + "description": "Search transactions based on the given transaction type. Allowed Values: invoice, customer_payment, bills, vendor_payment, credit_notes, creditnote_refund, expense, card_payment, purchase_or_charges, journal, deposit, refund, transfer_fund, base_currency_adjustment, opening_balance, sales_without_invoices, expense_refund, tax_refund, receipt_from_initial_debtors, owner_contribution, interest_income, other_income, owner_drawings and payment_to_initial_creditors.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search transactions based on the given transaction type. Allowed Values: invoice, customer_payment, bills, vendor_payment, credit_notes, creditnote_refund, expense, card_payment, purchase_or_charges, journal, deposit, refund, transfer_fund, base_currency_adjustment, opening_balance, sales_without_invoices, expense_refund, tax_refund, receipt_from_initial_debtors, owner_contribution, interest_income, other_income, owner_drawings and payment_to_initial_creditors." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by", + "description": "Sort accounts. Allowed Values: account_name and account_type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort accounts. Allowed Values: account_name and account_type." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListActiveInventoryItems.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListActiveInventoryItems.json new file mode 100644 index 00000000..26177326 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListActiveInventoryItems.json @@ -0,0 +1,616 @@ +{ + "name": "ListActiveInventoryItems", + "fully_qualified_name": "ZohoBooksApi.ListActiveInventoryItems@0.1.0", + "description": "Retrieve a paginated list of all active inventory items.\n\nUse this tool to fetch a list of all active items from the inventory. It provides the data with pagination to manage large sets of items efficiently.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to fetch items from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "item_name_search", + "required": false, + "description": "Search for items by name using prefixes 'name_startswith' or 'name_contains'. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by name. Max-length [100]. Variants: name_startswith and name_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + }, + { + "name": "description_filter", + "required": false, + "description": "Search items by description. Use keywords or phrases up to 100 characters. Prefix with 'description_startswith' or 'description_contains' for specific filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by description. Max-length [100]. Variants: description_startswith and description_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "description" + }, + { + "name": "search_by_rate_criteria", + "required": false, + "description": "Specify rate conditions to filter items. Use format like 'rate_less_than:100'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by rate. Variants: rate_less_than, rate_less_equals, rate_greater_than and rate_greater_equals" + }, + "inferrable": true, + "http_endpoint_parameter_name": "rate" + }, + { + "name": "search_by_tax_id", + "required": false, + "description": "Search for items using the tax ID as a filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by tax id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_id" + }, + { + "name": "tax_name_filter", + "required": false, + "description": "Filter items by their tax name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_name" + }, + { + "name": "tax_exemption_identifier", + "required": false, + "description": "ID for the tax exemption. Required if is_taxable is false.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption. Mandatory, if is_taxable is false." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_exemption_id" + }, + { + "name": "associated_account_id", + "required": false, + "description": "ID of the account to associate the item with.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the item has to be associated with." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "filter_items_by_status", + "required": false, + "description": "Filter items by status. Allowed values are 'Status.All', 'Status.Active', and 'Status.Inactive'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter items by status. Allowed Values: Status.All, Status.Active and Status.Inactive" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_items_by_text", + "required": false, + "description": "Search for items by name or description, up to 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by name or description. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_items_by", + "required": false, + "description": "Specify the attribute to sort items by. Allowed values: 'name', 'rate', 'tax_name'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort items. Allowed Values: name, rate and tax_name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "sat_item_key_code", + "required": false, + "description": "SAT Item key code used to filter items. Provide a valid string key code for lookup.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SAT Item key code" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sat_item_key_code" + }, + { + "name": "sat_unit_code", + "required": false, + "description": "SAT Unit code for specific inventory items. Used to search or filter items based on their unit code.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SAT Unit code" + }, + "inferrable": true, + "http_endpoint_parameter_name": "unitkey_code" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "The page number of active items to retrieve, with a default of 1 if unspecified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify the number of records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + }, + { + "name": "is_item_taxable", + "required": false, + "description": "Boolean indicating if the item is taxable. True means the item is taxable.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track the taxability of the item." + }, + "inferrable": true, + "http_endpoint_parameter_name": "is_taxable" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_items'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/items", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "name", + "tool_parameter_name": "item_name_search", + "description": "Search items by name. Max-length [100]. Variants: name_startswith and name_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by name. Max-length [100]. Variants: name_startswith and name_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "description", + "tool_parameter_name": "description_filter", + "description": "Search items by description. Max-length [100]. Variants: description_startswith and description_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by description. Max-length [100]. Variants: description_startswith and description_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rate", + "tool_parameter_name": "search_by_rate_criteria", + "description": "Search items by rate. Variants: rate_less_than, rate_less_equals, rate_greater_than and rate_greater_equals", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by rate. Variants: rate_less_than, rate_less_equals, rate_greater_than and rate_greater_equals" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_id", + "tool_parameter_name": "search_by_tax_id", + "description": "Search items by tax id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by tax id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_name", + "tool_parameter_name": "tax_name_filter", + "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": "is_taxable", + "tool_parameter_name": "is_item_taxable", + "description": "Boolean to track the taxability of the item.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track the taxability of the item." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_exemption_id", + "tool_parameter_name": "tax_exemption_identifier", + "description": "ID of the tax exemption. Mandatory, if is_taxable is false.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption. Mandatory, if is_taxable is false." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "associated_account_id", + "description": "ID of the account to which the item has to be associated with.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the item has to be associated with." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_items_by_status", + "description": "Filter items by status. Allowed Values: Status.All, Status.Active and Status.Inactive", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter items by status. Allowed Values: Status.All, Status.Active and Status.Inactive" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_items_by_text", + "description": "Search items by name or description. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search items by name or description. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_items_by", + "description": "Sort items. Allowed Values: name, rate and tax_name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort items. Allowed Values: name, rate and tax_name" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sat_item_key_code", + "tool_parameter_name": "sat_item_key_code", + "description": "SAT Item key code", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SAT Item key code" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "unitkey_code", + "tool_parameter_name": "sat_unit_code", + "description": "SAT Unit code", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SAT Unit code" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListAllBills.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListAllBills.json new file mode 100644 index 00000000..fcc092b7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListAllBills.json @@ -0,0 +1,715 @@ +{ + "name": "ListAllBills", + "fully_qualified_name": "ZohoBooksApi.ListAllBills@0.1.0", + "description": "Retrieve all bills with pagination support.\n\nThis tool is used to list all bills available in the system, providing pagination information to navigate through large datasets. It should be called whenever there's a need to view or analyze billing details over multiple pages.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's bills to list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "filter_by_bill_number", + "required": false, + "description": "Filter bills using the bill number. Use exact matches, prefix with 'bill_number_startswith', or substring with 'bill_number_contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by bill number. Accepts exact matches or use bill_number_startswith for prefix matching and bill_number_contains for substring matching. Useful for finding bills by unique identifier or partial patterns." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_number" + }, + { + "name": "filter_by_reference_number", + "required": false, + "description": "Filter bills by reference number. Supports exact matches, prefix matching using `reference_number_startswith`, and substring matching using `reference_number_contains`. Useful for finding bills by external references or vendor invoice numbers.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by reference number. Accepts exact matches or use reference_number_startswith for prefix matching and reference_number_contains for substring matching. Useful for finding bills by external references or vendor invoice numbers." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "bill_date_filter", + "required": false, + "description": "Filter bills by bill date in YYYY-MM-DD format. Use for specific dates, date ranges (date_start/date_end), or relative dates (date_before/date_after).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by bill date in YYYY-MM-DD format. Use date_start/date_end for ranges, date_before/date_after for relative dates. Useful for billing periods and due date management." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "filter_by_status", + "required": false, + "description": "Specify the status of bills to filter by. Options include 'paid', 'open', 'overdue', 'void', or 'partially_paid'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by status: paid, open, overdue, void, or partially_paid. Useful for payment status filtering, accounts payable management, and status-specific reporting." + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "filter_by_description_text", + "required": false, + "description": "Filter bills using description text. Supports exact matches, prefix matching with 'description_startswith', or substring matching with 'description_contains'. Useful for finding bills by line item descriptions or vendor notes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by description text. Accepts exact matches or use description_startswith for prefix matching and description_contains for substring matching. Useful for finding bills by line item descriptions or vendor notes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "description" + }, + { + "name": "filter_by_vendor_name", + "required": false, + "description": "Filter bills by vendor name. Use prefix matching with 'vendor_name_startswith' or substring matching with 'vendor_name_contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by vendor name. Use vendor_name_startswith for prefix matching or vendor_name_contains for substring matching. Useful for finding bills from specific suppliers." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_name" + }, + { + "name": "filter_by_total_amount", + "required": false, + "description": "Filter bills by total amount using conditions like less than, greater than, etc. Specify conditions using keys like 'total_less_than' or 'total_greater_than'.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by total amount. Use total_less_than, total_less_equals, total_greater_than, or total_greater_equals for amount-based filtering. Useful for finding bills within specific price ranges or above/below certain thresholds." + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "filter_by_vendor_id", + "required": false, + "description": "Unique identifier to filter bills by a specific vendor, retrieving all related bills.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by specific vendor ID. Accepts the unique identifier for a vendor to retrieve all bills associated with that particular supplier or vendor account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_id" + }, + { + "name": "filter_by_item_id", + "required": false, + "description": "Filter bills by a specific item ID. Retrieves all bills containing a particular product or service item based on its unique identifier.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by specific item ID. Retrieves all bills containing a particular product or service item based on its unique identifier." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "recurring_bill_identifier", + "required": false, + "description": "Filter bills by a specific recurring bill ID to retrieve all bills generated from a recurring template or schedule.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by recurring bill ID. Retrieves all bills generated from a specific recurring bill template or schedule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_bill_id" + }, + { + "name": "filter_by_purchase_order_id", + "required": false, + "description": "Specify the Purchase Order ID to filter bills associated with a specific order. Helps track procurement workflows.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by purchase order ID. Retrieves all bills associated with a specific purchase order for tracking procurement workflows." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "filter_by_last_modified_time", + "required": false, + "description": "Filter bills by last modification timestamp using ISO 8601 format (YYYY-MM-DDTHH:MM:SS+/-HHMM) to find bills modified at or after a specific time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by last modification timestamp. Accepts ISO 8601 format (YYYY-MM-DDTHH:MM:SS+/-HHMM) to find bills modified at or after a specific time." + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "bill_status_filter", + "required": false, + "description": "Filter bills by status. Options: Status.All, Status.PartiallyPaid, Status.Paid, Status.Overdue, Status.Void, Status.Open.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by status using predefined status constants. Options include Status.All, Status.PartiallyPaid, Status.Paid, Status.Overdue, Status.Void, and Status.Open." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_text", + "required": false, + "description": "Filter bills using general text across bill number, reference number, and vendor name to find matches. Useful for quick searches.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills using general search text. Searches across bill number, reference number, and vendor name fields to find matching bills. Useful for quick searches when you know part of the bill information." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number for pagination to navigate multiple pages of bills.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the page number for pagination. Use this parameter to navigate through multiple pages of bills when the total number of bills exceeds the per_page limit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "bills_per_page", + "required": false, + "description": "Specify the number of bills to retrieve per page. Default is 200, but adjustable for performance needs and rate limits.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the number of bills to retrieve per page. The default value is 200, but you can adjust this to optimize performance based on your needs and API rate limits." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Specify the column to sort bills by. Available options: vendor_name, bill_number, date, due_date, total, balance, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the column to sort bills by. Available options include vendor_name, bill_number, date, due_date, total, balance, and created_time." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "sorting_order", + "required": false, + "description": "Specify the sort order for bills: 'A' for ascending, 'D' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the sorting order for bills. Use A for ascending order (A-Z, 0-9, earliest to latest) or D for descending order (Z-A, 9-0, latest to earliest)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_order" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_bills'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_number", + "tool_parameter_name": "filter_by_bill_number", + "description": "Filter bills by bill number. Accepts exact matches or use bill_number_startswith for prefix matching and bill_number_contains for substring matching. Useful for finding bills by unique identifier or partial patterns.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by bill number. Accepts exact matches or use bill_number_startswith for prefix matching and bill_number_contains for substring matching. Useful for finding bills by unique identifier or partial patterns." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "filter_by_reference_number", + "description": "Filter bills by reference number. Accepts exact matches or use reference_number_startswith for prefix matching and reference_number_contains for substring matching. Useful for finding bills by external references or vendor invoice numbers.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by reference number. Accepts exact matches or use reference_number_startswith for prefix matching and reference_number_contains for substring matching. Useful for finding bills by external references or vendor invoice numbers." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "bill_date_filter", + "description": "Filter bills by bill date in YYYY-MM-DD format. Use date_start/date_end for ranges, date_before/date_after for relative dates. Useful for billing periods and due date management.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by bill date in YYYY-MM-DD format. Use date_start/date_end for ranges, date_before/date_after for relative dates. Useful for billing periods and due date management." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "filter_by_status", + "description": "Filter bills by status: paid, open, overdue, void, or partially_paid. Useful for payment status filtering, accounts payable management, and status-specific reporting.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by status: paid, open, overdue, void, or partially_paid. Useful for payment status filtering, accounts payable management, and status-specific reporting." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "description", + "tool_parameter_name": "filter_by_description_text", + "description": "Filter bills by description text. Accepts exact matches or use description_startswith for prefix matching and description_contains for substring matching. Useful for finding bills by line item descriptions or vendor notes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by description text. Accepts exact matches or use description_startswith for prefix matching and description_contains for substring matching. Useful for finding bills by line item descriptions or vendor notes." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_name", + "tool_parameter_name": "filter_by_vendor_name", + "description": "Filter bills by vendor name. Use vendor_name_startswith for prefix matching or vendor_name_contains for substring matching. Useful for finding bills from specific suppliers.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by vendor name. Use vendor_name_startswith for prefix matching or vendor_name_contains for substring matching. Useful for finding bills from specific suppliers." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "filter_by_total_amount", + "description": "Filter bills by total amount. Use total_less_than, total_less_equals, total_greater_than, or total_greater_equals for amount-based filtering. Useful for finding bills within specific price ranges or above/below certain thresholds.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by total amount. Use total_less_than, total_less_equals, total_greater_than, or total_greater_equals for amount-based filtering. Useful for finding bills within specific price ranges or above/below certain thresholds." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_id", + "tool_parameter_name": "filter_by_vendor_id", + "description": "Filter bills by specific vendor ID. Accepts the unique identifier for a vendor to retrieve all bills associated with that particular supplier or vendor account.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by specific vendor ID. Accepts the unique identifier for a vendor to retrieve all bills associated with that particular supplier or vendor account." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "filter_by_item_id", + "description": "Filter bills by specific item ID. Retrieves all bills containing a particular product or service item based on its unique identifier.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by specific item ID. Retrieves all bills containing a particular product or service item based on its unique identifier." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_bill_id", + "tool_parameter_name": "recurring_bill_identifier", + "description": "Filter bills by recurring bill ID. Retrieves all bills generated from a specific recurring bill template or schedule.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by recurring bill ID. Retrieves all bills generated from a specific recurring bill template or schedule." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "filter_by_purchase_order_id", + "description": "Filter bills by purchase order ID. Retrieves all bills associated with a specific purchase order for tracking procurement workflows.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by purchase order ID. Retrieves all bills associated with a specific purchase order for tracking procurement workflows." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "filter_by_last_modified_time", + "description": "Filter bills by last modification timestamp. Accepts ISO 8601 format (YYYY-MM-DDTHH:MM:SS+/-HHMM) to find bills modified at or after a specific time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by last modification timestamp. Accepts ISO 8601 format (YYYY-MM-DDTHH:MM:SS+/-HHMM) to find bills modified at or after a specific time." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "bill_status_filter", + "description": "Filter bills by status using predefined status constants. Options include Status.All, Status.PartiallyPaid, Status.Paid, Status.Overdue, Status.Void, and Status.Open.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills by status using predefined status constants. Options include Status.All, Status.PartiallyPaid, Status.Paid, Status.Overdue, Status.Void, and Status.Open." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_text", + "description": "Filter bills using general search text. Searches across bill number, reference number, and vendor name fields to find matching bills. Useful for quick searches when you know part of the bill information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter bills using general search text. Searches across bill number, reference number, and vendor name fields to find matching bills. Useful for quick searches when you know part of the bill information." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Specify the page number for pagination. Use this parameter to navigate through multiple pages of bills when the total number of bills exceeds the per_page limit.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the page number for pagination. Use this parameter to navigate through multiple pages of bills when the total number of bills exceeds the per_page limit." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "bills_per_page", + "description": "Specify the number of bills to retrieve per page. The default value is 200, but you can adjust this to optimize performance based on your needs and API rate limits.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the number of bills to retrieve per page. The default value is 200, but you can adjust this to optimize performance based on your needs and API rate limits." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "description": "Specify the column to sort bills by. Available options include vendor_name, bill_number, date, due_date, total, balance, and created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the column to sort bills by. Available options include vendor_name, bill_number, date, due_date, total, balance, and created_time." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_order", + "tool_parameter_name": "sorting_order", + "description": "Specify the sorting order for bills. Use A for ascending order (A-Z, 0-9, earliest to latest) or D for descending order (Z-A, 9-0, latest to earliest).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the sorting order for bills. Use A for ascending order (A-Z, 0-9, earliest to latest) or D for descending order (Z-A, 9-0, latest to earliest)." + }, + "accepted_as": "query", + "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": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListBankAccounts.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListBankAccounts.json new file mode 100644 index 00000000..f53817b7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListBankAccounts.json @@ -0,0 +1,253 @@ +{ + "name": "ListBankAccounts", + "fully_qualified_name": "ZohoBooksApi.ListBankAccounts@0.1.0", + "description": "List all bank and credit card accounts for your organization.\n\nUse this tool to retrieve all bank and credit card accounts associated with your organization in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. This is required to list all associated bank and credit card accounts in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_status_filter", + "required": false, + "description": "Specify the status to filter accounts: 'Status.All', 'Status.Active', or 'Status.Inactive'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter the account by their status. Allowed Values: Status.All, Status.Active and Status.Inactive." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "sort_by", + "required": false, + "description": "Specify the sorting criterion for the accounts. Options: 'account_name', 'account_type', 'account_code'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort the values based on the allowed values. Allowed Values: account_name,account_type and account_code." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number", + "required": false, + "description": "The page number of results to retrieve. Defaults to 1 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_bank_accounts'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "account_status_filter", + "description": "Filter the account by their status. Allowed Values: Status.All, Status.Active and Status.Inactive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter the account by their status. Allowed Values: Status.All, Status.Active and Status.Inactive." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by", + "description": "Sort the values based on the allowed values. Allowed Values: account_name,account_type and account_code.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort the values based on the allowed values. Allowed Values: account_name,account_type and account_code." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListBaseCurrencyAdjustments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListBaseCurrencyAdjustments.json new file mode 100644 index 00000000..30298228 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListBaseCurrencyAdjustments.json @@ -0,0 +1,286 @@ +{ + "name": "ListBaseCurrencyAdjustments", + "fully_qualified_name": "ZohoBooksApi.ListBaseCurrencyAdjustments@0.1.0", + "description": "Fetch base currency adjustments list from Zoho Books.\n\nThis tool retrieves a list of base currency adjustments from Zoho Books. Call this tool when you need to obtain current base currency adjustments for accounting or financial reporting purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to retrieve currency adjustments from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "filter_by_date", + "required": false, + "description": "Filter the base currency adjustment list by specific date ranges. Allowed values are: Date.All, Date.Today, Date.ThisWeek, Date.ThisMonth, Date.ThisQuarter, Date.ThisYear.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter base currency adjustment list. Allowed Values: Date.All, Date.Today, Date.ThisWeek, Date.ThisMonth, Date.ThisQuarter and Date.ThisYear." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "sort_currency_adjustment_list_by", + "required": false, + "description": "Specify the sorting criterion for the currency adjustment list. Options include: adjustment_date, exchange_rate, currency_code, debit_or_credit, or gain_or_loss.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort base currency adjustment list. Allowed Values: adjustment_date, exchange_rate, currency_code, debit_or_credit and gain_or_loss." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "search_by_last_modified_time", + "required": false, + "description": "Use a timestamp to filter adjustments by their last modified time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search using the Last Modified Time of the Base Currency Adjustment" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "fetch_page_number", + "required": false, + "description": "The page number to fetch. Defaults to 1 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_base_currency_adjustments'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/basecurrencyadjustment", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_by_date", + "description": "Filter base currency adjustment list. Allowed Values: Date.All, Date.Today, Date.ThisWeek, Date.ThisMonth, Date.ThisQuarter and Date.ThisYear.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter base currency adjustment list. Allowed Values: Date.All, Date.Today, Date.ThisWeek, Date.ThisMonth, Date.ThisQuarter and Date.ThisYear." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_currency_adjustment_list_by", + "description": "Sort base currency adjustment list. Allowed Values: adjustment_date, exchange_rate, currency_code, debit_or_credit and gain_or_loss.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort base currency adjustment list. Allowed Values: adjustment_date, exchange_rate, currency_code, debit_or_credit and gain_or_loss." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "search_by_last_modified_time", + "description": "Search using the Last Modified Time of the Base Currency Adjustment", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search using the Last Modified Time of the Base Currency Adjustment" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "fetch_page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListBillsWithVendorCredit.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListBillsWithVendorCredit.json new file mode 100644 index 00000000..88766c38 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListBillsWithVendorCredit.json @@ -0,0 +1,154 @@ +{ + "name": "ListBillsWithVendorCredit", + "fully_qualified_name": "ZohoBooksApi.ListBillsWithVendorCredit@0.1.0", + "description": "List bills with applied vendor credit from a vendor credit ID.\n\nFetch a list of bills where a specific vendor credit has been applied. Use this tool to understand how vendor credits are distributed across bills.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to fetch applicable bills for vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_id", + "required": true, + "description": "Unique identifier for the vendor credit to list the applied bills.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_bills_credited'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/bills", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_id", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListChartOfAccounts.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListChartOfAccounts.json new file mode 100644 index 00000000..8a8df3b4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListChartOfAccounts.json @@ -0,0 +1,319 @@ +{ + "name": "ListChartOfAccounts", + "fully_qualified_name": "ZohoBooksApi.ListChartOfAccounts@0.1.0", + "description": "Retrieve a list of all chart of accounts.\n\nUse this tool to obtain a complete list of chart of accounts with pagination support. Ideal for financial data management.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to retrieve chart of accounts for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_type_filter", + "required": false, + "description": "Filter accounts based on type and status. Options: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income, AccountType.Expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter accounts based on its account type and status. Allowed Values: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income and AccountType.Expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "sort_accounts_by", + "required": false, + "description": "Specify how to sort the accounts. Options: 'account_name', 'account_type'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort accounts. Allowed Values: account_name and account_type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "last_modified_time_filter", + "required": false, + "description": "Fetch accounts modified since a specific timestamp, formatted as YYYY-MM-DDTHH:MM:SSZ.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number to retrieve. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to retrieve per page. Defaults to 200 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + }, + { + "name": "include_balance", + "required": false, + "description": "Include current account balances in the response when set to true.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to get current balance of accounts." + }, + "inferrable": true, + "http_endpoint_parameter_name": "showbalance" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_chart_of_accounts'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/chartofaccounts", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "showbalance", + "tool_parameter_name": "include_balance", + "description": "Boolean to get current balance of accounts.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to get current balance of accounts." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "account_type_filter", + "description": "Filter accounts based on its account type and status. Allowed Values: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income and AccountType.Expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter accounts based on its account type and status. Allowed Values: AccountType.All, AccountType.Active, AccountType.Inactive, AccountType.Asset, AccountType.Liability, AccountType.Equity, AccountType.Income and AccountType.Expense." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_accounts_by", + "description": "Sort accounts. Allowed Values: account_name and account_type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort accounts. Allowed Values: account_name and account_type." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "last_modified_time_filter", + "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": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListChildExpenses.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListChildExpenses.json new file mode 100644 index 00000000..e31adb5a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListChildExpenses.json @@ -0,0 +1,253 @@ +{ + "name": "ListChildExpenses", + "fully_qualified_name": "ZohoBooksApi.ListChildExpenses@0.1.0", + "description": "Retrieve child expenses from a recurring expense.\n\nUse this tool to list expenses that have been generated from a specific recurring expense. Useful for tracking individual instances of a recurring cost.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to list child expenses for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_expense_identifier", + "required": true, + "description": "Unique identifier for the recurring expense to retrieve child expenses.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_expense_id" + }, + { + "name": "sort_expenses_by", + "required": false, + "description": "Specify the field to sort expenses. Valid options: next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort expenses.Allowed Values next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name and created_time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "fetch_page_number", + "required": false, + "description": "Specify the page number to retrieve. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify the number of expense records to retrieve per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_child_expenses_of_recurring_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}/expenses", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_expenses_by", + "description": "Sort expenses.Allowed Values next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name and created_time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort expenses.Allowed Values next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name and created_time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "fetch_page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "recurring_expense_id", + "tool_parameter_name": "recurring_expense_identifier", + "description": "Unique identifier of the recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCompanyEmployees.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCompanyEmployees.json new file mode 100644 index 00000000..716dc9cf --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCompanyEmployees.json @@ -0,0 +1,187 @@ +{ + "name": "ListCompanyEmployees", + "fully_qualified_name": "ZohoBooksApi.ListCompanyEmployees@0.1.0", + "description": "Retrieve a paginated list of all employees.\n\nUse this tool to obtain a list of employees from the company database, including pagination for handling large sets of data. Ideal for getting employee details in an organized manner.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose employees are being listed. This should be provided as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "page_number", + "required": false, + "description": "The page number to fetch. Default is 1 for the first page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify the number of employee records to retrieve per page, with a default of 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_employees'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/employees", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListConfiguredCurrencies.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListConfiguredCurrencies.json new file mode 100644 index 00000000..d8781a33 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListConfiguredCurrencies.json @@ -0,0 +1,220 @@ +{ + "name": "ListConfiguredCurrencies", + "fully_qualified_name": "ZohoBooksApi.ListConfiguredCurrencies@0.1.0", + "description": "Retrieve the list of configured currencies in Zoho Books.\n\nThis tool retrieves the list of all currencies configured within Zoho Books. Use it when you need to know which currencies are set up in the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required to retrieve currency data for a specific organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "exclude_base_currency_filter", + "required": false, + "description": "Set to exclude the base currency from the result. Use 'Currencies.ExcludeBaseCurrency'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter currencies excluding base currency. Allowed Values: Currencies.ExcludeBaseCurrency" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "page_number", + "required": false, + "description": "The page number of currency records to fetch. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of currency records to fetch per page. Defaults to 200 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_currencies'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "exclude_base_currency_filter", + "description": "Filter currencies excluding base currency. Allowed Values: Currencies.ExcludeBaseCurrency", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter currencies excluding base currency. Allowed Values: Currencies.ExcludeBaseCurrency" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListContactPersons.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListContactPersons.json new file mode 100644 index 00000000..060e442c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListContactPersons.json @@ -0,0 +1,220 @@ +{ + "name": "ListContactPersons", + "fully_qualified_name": "ZohoBooksApi.ListContactPersons@0.1.0", + "description": "Retrieve contact persons for a given contact ID.\n\nUse this tool to list all contact persons associated with a specific contact ID, utilizing pagination.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the contact persons are being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_identifier", + "required": true, + "description": "Unique identifier for the contact to retrieve associated persons.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "page_number", + "required": false, + "description": "The page number to fetch when listing contact persons. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specifies the number of contact records to retrieve per page. The default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_contact_persons'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/contactpersons", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCreditNoteInvoices.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCreditNoteInvoices.json new file mode 100644 index 00000000..7143f9f4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCreditNoteInvoices.json @@ -0,0 +1,154 @@ +{ + "name": "ListCreditNoteInvoices", + "fully_qualified_name": "ZohoBooksApi.ListCreditNoteInvoices@0.1.0", + "description": "List invoices to which the credit note is applied.\n\nUse this tool to retrieve a list of invoices that are associated with a specific credit note.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which you want to list the invoices associated with the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to retrieve associated invoices.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_invoices_of_credit_note'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/invoices", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCreditNoteRefunds.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCreditNoteRefunds.json new file mode 100644 index 00000000..a9b57688 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCreditNoteRefunds.json @@ -0,0 +1,220 @@ +{ + "name": "ListCreditNoteRefunds", + "fully_qualified_name": "ZohoBooksApi.ListCreditNoteRefunds@0.1.0", + "description": "Retrieve refunds for a specific credit note.\n\nUse this tool to list all refunds associated with a particular credit note by specifying its ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to retrieve credit note refunds for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to retrieve refunds for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number to retrieve in paginated results. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "results_per_page", + "required": false, + "description": "Number of records to return per page, controlling pagination. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many credit notes are returned in each page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_credit_note_refunds1'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "results_per_page", + "description": "Number of records per page for pagination. Controls how many credit notes are returned in each page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many credit notes are returned in each page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCreditNotes.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCreditNotes.json new file mode 100644 index 00000000..d553f231 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCreditNotes.json @@ -0,0 +1,682 @@ +{ + "name": "ListCreditNotes", + "fully_qualified_name": "ZohoBooksApi.ListCreditNotes@0.1.0", + "description": "Retrieve and filter a list of credit notes.\n\nRetrieve a paginated list of credit notes using filters and sorting based on date, status, amount, customer details, items, taxes, and custom fields.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which you want to list credit notes. Required for identification and retrieval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_number", + "required": false, + "description": "Filter credit notes by a specific credit note number. The number must be a unique identifier, up to 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by specific credit note number. Use this parameter to search for a particular credit note by its unique number. Max-Length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_number" + }, + { + "name": "filter_date", + "required": false, + "description": "Filter credit notes by the date they were raised. Use yyyy-mm-dd format to search for specific credit notes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by the date they were raised. Use yyyy-mm-dd format to search for credit notes created on a specific date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "filter_by_status", + "required": false, + "description": "Specify the status to filter credit notes. Options include: 'open', 'closed', 'void', or 'draft'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by their current status. Allowed values: open, closed, void, or draft." + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "filter_by_total_amount", + "required": false, + "description": "Filter credit notes by their total amount. Input a specific total value to retrieve matching credit notes.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by their total amount. Use this parameter to search for credit notes with a specific total value." + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "filter_by_reference_number", + "required": false, + "description": "Filter credit notes by their reference number, limited to 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by their reference number. Use this parameter to search for credit notes with a specific reference number. Max-Length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "filter_by_customer_name", + "required": false, + "description": "Filter credit notes by customer name. Use to search for credit notes associated with a specific customer. Max-Length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by customer name. Use this parameter to search for credit notes associated with a specific customer. Max-Length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "filter_by_item_name", + "required": false, + "description": "Search for credit notes by item name. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by item name. Use this parameter to search for credit notes containing specific items. Max-Length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_name" + }, + { + "name": "filter_by_customer_id", + "required": false, + "description": "Search for credit notes associated with a specific customer using the customer ID. Retrieve customer IDs from the contacts API.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by customer ID. Use this parameter to search for credit notes associated with a specific customer. Retrieve customer IDs from the contacts API." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "filter_by_item_description", + "required": false, + "description": "Filter credit notes by item description. Use 'startswith:' or 'contains:' for flexible matching. Max length of 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by item description. Supports variants item_description_startswith and item_description_contains for flexible searching. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_description" + }, + { + "name": "filter_by_item_id", + "required": false, + "description": "Filter credit notes by item ID to find notes containing a specific item. Obtain item IDs from the items API.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by item ID. Use this parameter to search for credit notes containing a specific item. Retrieve item IDs from the items API." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "filter_by_line_item_id", + "required": false, + "description": "Search for credit notes containing a specific line item using its ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by line item ID. Use this parameter to search for credit notes containing a specific line item within the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "line_item_id" + }, + { + "name": "filter_by_tax_id", + "required": false, + "description": "Filter credit notes using a specific tax ID. Retrieve the tax ID from the taxes API.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by tax ID. Use this parameter to search for credit notes with a specific tax applied. Retrieve tax IDs from the taxes API." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_id" + }, + { + "name": "status_filter", + "required": false, + "description": "Filter credit notes by status using predefined values: 'Status.All', 'Status.Open', 'Status.Draft', 'Status.Closed', 'Status.Void'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by status using predefined status values. Allowed values: Status.All, Status.Open, Status.Draft, Status.Closed, and Status.Void." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_text", + "required": false, + "description": "Search credit notes across multiple fields like credit note number, customer name, and reference number. Max-length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search credit notes using text search across multiple fields. Searches credit note number, customer name, and reference number. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_credit_notes_by_column", + "required": false, + "description": "Specify the column by which to sort the credit notes. Allowed values: 'customer_name', 'creditnote_number', 'balance', 'total', 'date', and 'created_time'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort credit notes by specified column. Allowed values: customer_name, creditnote_number, balance, total, date, and created_time." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number", + "required": false, + "description": "Page number for pagination. Specify which page of results to retrieve. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify the number of credit notes to be returned per page for pagination. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many credit notes are returned in each page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_credit_notes'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_number", + "tool_parameter_name": "credit_note_number", + "description": "Filter credit notes by specific credit note number. Use this parameter to search for a particular credit note by its unique number. Max-Length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by specific credit note number. Use this parameter to search for a particular credit note by its unique number. Max-Length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "filter_date", + "description": "Filter credit notes by the date they were raised. Use yyyy-mm-dd format to search for credit notes created on a specific date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by the date they were raised. Use yyyy-mm-dd format to search for credit notes created on a specific date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "filter_by_status", + "description": "Filter credit notes by their current status. Allowed values: open, closed, void, or draft.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by their current status. Allowed values: open, closed, void, or draft." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "filter_by_total_amount", + "description": "Filter credit notes by their total amount. Use this parameter to search for credit notes with a specific total value.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by their total amount. Use this parameter to search for credit notes with a specific total value." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "filter_by_reference_number", + "description": "Filter credit notes by their reference number. Use this parameter to search for credit notes with a specific reference number. Max-Length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by their reference number. Use this parameter to search for credit notes with a specific reference number. Max-Length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "filter_by_customer_name", + "description": "Filter credit notes by customer name. Use this parameter to search for credit notes associated with a specific customer. Max-Length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by customer name. Use this parameter to search for credit notes associated with a specific customer. Max-Length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_name", + "tool_parameter_name": "filter_by_item_name", + "description": "Filter credit notes by item name. Use this parameter to search for credit notes containing specific items. Max-Length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by item name. Use this parameter to search for credit notes containing specific items. Max-Length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "filter_by_customer_id", + "description": "Filter credit notes by customer ID. Use this parameter to search for credit notes associated with a specific customer. Retrieve customer IDs from the contacts API.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by customer ID. Use this parameter to search for credit notes associated with a specific customer. Retrieve customer IDs from the contacts API." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_description", + "tool_parameter_name": "filter_by_item_description", + "description": "Filter credit notes by item description. Supports variants item_description_startswith and item_description_contains for flexible searching. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by item description. Supports variants item_description_startswith and item_description_contains for flexible searching. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "filter_by_item_id", + "description": "Filter credit notes by item ID. Use this parameter to search for credit notes containing a specific item. Retrieve item IDs from the items API.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by item ID. Use this parameter to search for credit notes containing a specific item. Retrieve item IDs from the items API." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "line_item_id", + "tool_parameter_name": "filter_by_line_item_id", + "description": "Filter credit notes by line item ID. Use this parameter to search for credit notes containing a specific line item within the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by line item ID. Use this parameter to search for credit notes containing a specific line item within the credit note." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_id", + "tool_parameter_name": "filter_by_tax_id", + "description": "Filter credit notes by tax ID. Use this parameter to search for credit notes with a specific tax applied. Retrieve tax IDs from the taxes API.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by tax ID. Use this parameter to search for credit notes with a specific tax applied. Retrieve tax IDs from the taxes API." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "status_filter", + "description": "Filter credit notes by status using predefined status values. Allowed values: Status.All, Status.Open, Status.Draft, Status.Closed, and Status.Void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter credit notes by status using predefined status values. Allowed values: Status.All, Status.Open, Status.Draft, Status.Closed, and Status.Void." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_text", + "description": "Search credit notes using text search across multiple fields. Searches credit note number, customer name, and reference number. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search credit notes using text search across multiple fields. Searches credit note number, customer name, and reference number. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_credit_notes_by_column", + "description": "Sort credit notes by specified column. Allowed values: customer_name, creditnote_number, balance, total, date, and created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort credit notes by specified column. Allowed values: customer_name, creditnote_number, balance, total, date, and created_time." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records per page for pagination. Controls how many credit notes are returned in each page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many credit notes are returned in each page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCurrencyAdjustmentAccounts.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCurrencyAdjustmentAccounts.json new file mode 100644 index 00000000..bb1ed3cd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCurrencyAdjustmentAccounts.json @@ -0,0 +1,253 @@ +{ + "name": "ListCurrencyAdjustmentAccounts", + "fully_qualified_name": "ZohoBooksApi.ListCurrencyAdjustmentAccounts@0.1.0", + "description": "Retrieve accounts involved in currency adjustments.\n\nThis tool retrieves a list of accounts that have transactions affected by a specified exchange rate. Use this to find financial accounts needing currency adjustment.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the currency adjustment accounts are needed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_id_for_adjustment", + "required": true, + "description": "ID of the currency to post an adjustment for. This specifies which currency is being adjusted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of currency for which we need to post adjustment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + }, + { + "name": "adjustment_date", + "required": true, + "description": "Specify the date for the currency adjustment in YYYY-MM-DD format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of adjustment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "adjustment_date" + }, + { + "name": "exchange_rate", + "required": true, + "description": "Specify the exchange rate for the currency to affect transactions.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "exchange_rate" + }, + { + "name": "adjustment_notes", + "required": true, + "description": "Notes for the base currency adjustment, providing additional information or context.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for base currency adjustment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "notes" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_base_currency_adjustment_accounts'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/basecurrencyadjustment/accounts", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "currency_id_for_adjustment", + "description": "ID of currency for which we need to post adjustment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of currency for which we need to post adjustment." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "adjustment_date", + "tool_parameter_name": "adjustment_date", + "description": "Date of adjustment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of adjustment." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "exchange_rate", + "tool_parameter_name": "exchange_rate", + "description": "Exchange rate of the currency.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "notes", + "tool_parameter_name": "adjustment_notes", + "description": "Notes for base currency adjustment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for base currency adjustment." + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCurrencyExchangeRates.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCurrencyExchangeRates.json new file mode 100644 index 00000000..917bd82e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCurrencyExchangeRates.json @@ -0,0 +1,253 @@ +{ + "name": "ListCurrencyExchangeRates", + "fully_qualified_name": "ZohoBooksApi.ListCurrencyExchangeRates@0.1.0", + "description": "Retrieve exchange rates for a specific currency.\n\nThis tool fetches a list of configured exchange rates for a given currency using its ID. Call this tool to obtain exchange rate information associated with a particular currency.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to retrieve exchange rates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_identifier", + "required": true, + "description": "Unique identifier for the currency to retrieve exchange rates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + }, + { + "name": "exchange_rate_from_date", + "required": false, + "description": "Date to start retrieving exchange rates. Returns rates from this date or nearest previous match.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Returns the exchange rate details from the given date or from previous closest match in the absence of the exchange rate on the given date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "from_date" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Sorts the exchange rates by the specified column. Only 'effective_date' is allowed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sorts the exchange rate according to this column. Allowed Values : effective_date" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "return_current_date_exchange_rate_only", + "required": false, + "description": "Set to true to return the exchange rate only if it's available for the current date.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To return the exchange rate only if available for current date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "is_current_date" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_exchange_rates'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "from_date", + "tool_parameter_name": "exchange_rate_from_date", + "description": "Returns the exchange rate details from the given date or from previous closest match in the absence of the exchange rate on the given date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Returns the exchange rate details from the given date or from previous closest match in the absence of the exchange rate on the given date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "is_current_date", + "tool_parameter_name": "return_current_date_exchange_rate_only", + "description": "To return the exchange rate only if available for current date.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To return the exchange rate only if available for current date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "description": "Sorts the exchange rate according to this column. Allowed Values : effective_date", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sorts the exchange rate according to this column. Allowed Values : effective_date" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "currency_identifier", + "description": "Unique identifier of the currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomModuleRecords.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomModuleRecords.json new file mode 100644 index 00000000..f594b1fa --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomModuleRecords.json @@ -0,0 +1,154 @@ +{ + "name": "ListCustomModuleRecords", + "fully_qualified_name": "ZohoBooksApi.ListCustomModuleRecords@0.1.0", + "description": "Fetches records from a specified custom module.\n\nUse this tool to retrieve the list of records from a specific custom module in Zoho Books. Provide the module name to get the corresponding records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the Zoho organization to fetch records from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "custom_module_name", + "required": true, + "description": "Name of the custom module from which to retrieve records in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_records_of_custom_module'.", + "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": [ + "ZohoBooks.custommodules.ALL" + ] + } + }, + "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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/{module_name}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_name", + "tool_parameter_name": "custom_module_name", + "description": "Module Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomerDebitNotes.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomerDebitNotes.json new file mode 100644 index 00000000..24c89d94 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomerDebitNotes.json @@ -0,0 +1,748 @@ +{ + "name": "ListCustomerDebitNotes", + "fully_qualified_name": "ZohoBooksApi.ListCustomerDebitNotes@0.1.0", + "description": "Retrieve and organize customer debit notes easily.\n\nUse this tool to access customer debit notes with options for pagination, filtering, searching, and sorting, allowing you to view and organize debit note data efficiently.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization for this request. Required for identifying the organization whose debit notes are being queried.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "search_item_name", + "required": false, + "description": "Search debit notes based on product or service names. Supports 'item_name_startswith' and 'item_name_contains'. Max length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by item name. Filters debit notes based on product or service names in debit note line items. Supports item_name_startswith and item_name_contains variants. Maximum length is 100 characters. Useful for finding debit notes with specific products or services." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_name" + }, + { + "name": "search_by_item_id", + "required": false, + "description": "Search for customer debit notes using a specific item ID to filter based on product or service identifiers.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by item ID. Filters debit notes based on the unique identifier of specific products or services in line items. Use the GET `/items` API to find available item IDs. Useful for finding all debit notes containing a specific product or service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "item_description_filter", + "required": false, + "description": "Filter debit notes by item description using detailed descriptions of products or services. Supports 'startswith' and 'contains' variants. Max length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by item description. Filters debit notes based on detailed descriptions of products or services in line items. Supports item_description_startswith and item_description_contains variants. Maximum length is 100 characters. Useful for finding debit notes with specific item descriptions or technical specifications." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_description" + }, + { + "name": "search_by_customer_name", + "required": false, + "description": "Search debit notes by customer name. Filters based on the business or individual name. Maximum 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by customer name. Filters debit notes based on the business or individual name associated with the debit note. Maximum length is 100 characters. Useful for finding all debit notes for a specific customer or generating customer reports." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "customer_email_filter", + "required": false, + "description": "Filter debit notes by customer email address, with a maximum length of 100 characters, to find specific customers or generate segment reports.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by customer email address. Filters debit notes based on the email address of the customer or contact person. Maximum length is 100 characters. Useful for finding debit notes for specific customers or generating customer segment reports." + }, + "inferrable": true, + "http_endpoint_parameter_name": "email" + }, + { + "name": "search_by_total_amount", + "required": false, + "description": "Filter debit notes by the total amount, including taxes, discounts, and adjustments. Useful for finding specific price ranges or high-value transactions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by total amount. Filters debit notes based on the final debit note amount including taxes, discounts, and adjustments. Useful for finding debit notes within specific price ranges or identifying high-value transactions." + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "search_by_outstanding_balance", + "required": false, + "description": "Filter debit notes by the remaining unpaid amount owed by the customer. Useful for finding overdue debit notes, tracking receivables, or generating aging reports.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by outstanding balance. Filters debit notes based on the remaining unpaid amount owed by the customer. Useful for finding overdue debit notes, tracking receivables, or generating aging reports." + }, + "inferrable": true, + "http_endpoint_parameter_name": "balance" + }, + { + "name": "search_by_custom_field", + "required": false, + "description": "Filter debit notes using custom fields. Supports 'custom_field_startswith' and 'custom_field_contains' for searching specific text patterns.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by custom fields.Variants: custom_field_startswith and custom_field_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_field" + }, + { + "name": "search_date_range", + "required": false, + "description": "Filter debit notes by creation date using yyyy-mm-dd format. Supports variants: date_start, date_end, date_before, date_after.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by debit note date. Filters debit notes based on the date they were created. Use yyyy-mm-dd format. Supports variants: date_start, date_end, date_before and date_after. Useful for finding debit notes within date ranges or specific time periods." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "filter_due_date", + "required": false, + "description": "Search debit notes by due date using yyyy-mm-dd format. Supports 'due_date_start', 'due_date_end', 'due_date_before', and 'due_date_after' variants.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by due date. Filters debit notes based on the payment due date. Use yyyy-mm-dd format. Supports variants: due_date_start, due_date_end, due_date_before and due_date_after. Useful for finding overdue debit notes or debit notes due within specific periods." + }, + "inferrable": true, + "http_endpoint_parameter_name": "due_date" + }, + { + "name": "creation_date_filter", + "required": false, + "description": "Filter debit notes by creation date. Use formats: 'yyyy-mm-dd', 'created_date_start', 'created_date_end', 'created_date_before', or 'created_date_after'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by creation date. Filters debit notes based on the date they were created. Use yyyy-mm-dd format. Supports variants: created_date_start, created_date_end, created_date_before and created_date_after. Useful for finding debit notes created within specific time periods or date ranges." + }, + "inferrable": true, + "http_endpoint_parameter_name": "created_date" + }, + { + "name": "last_modified_timestamp", + "required": false, + "description": "Filter debit notes modified after this timestamp in YYYY-MM-DDTHH:MM:SS-UTC format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes modified after a specific time. Filters debit notes based on their last modification timestamp. Use YYYY-MM-DDTHH:MM:SS-UTC format. Useful for finding recently updated debit notes or syncing data changes. Example : 2023-11-18T02:02:51-0800, 2025-19-19T02:02:51%2B0800" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "status_filter", + "required": false, + "description": "Filter debit notes by their status. Allowed values: sent, draft, overdue, paid, void, unpaid, partially_paid, viewed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by status. Filters debit notes based on their current state in the billing workflow. Allowed values: sent, draft, overdue, paid, void, unpaid, partially_paid and viewed. Useful for finding debit notes in specific stages of the billing process." + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "search_by_customer_id", + "required": false, + "description": "Search debit notes by the customer's unique identifier. Use the customer ID from the Contacts API to find all corresponding debit notes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by customer ID. Filters debit notes based on the unique identifier of the customer for whom the debit note was created. Use the customer ID returned by the Contacts API to find all debit notes for a specific customer." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "filter_by_debit_note_type", + "required": false, + "description": "Set to 'Type.DebitNote' to filter debit notes specifically. Required for this search.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter needs to be Type.DebitNote." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "general_search_text", + "required": false, + "description": "Search debit notes by number, purchase order, or customer name. Max 100 characters. Useful for quick searches across multiple fields.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by debit note number, purchase order, or customer name. This parameter performs a general search across multiple debit note fields. Maximum length is 100 characters. Useful for quick searches when you know part of the debit note information but are unsure which specific field to search." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_debit_notes_by_column", + "required": false, + "description": "Sort debit notes by a specific column. Allowed values: customer_name, debit_note_number, date, due_date, total, balance, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort debit notes by specific column. Allowed values: customer_name, debit_note_number, date, due_date, total, balance and created_time. Use this parameter to organize debit note results in a specific order for better data analysis and reporting." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "Page number to retrieve from paginated results. Default is 1. Use with `per_page` to navigate extensive debit note data efficiently.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched from the paginated results. Default value is 1. Use this parameter along with per_page to navigate through large sets of debit note data. Useful for implementing pagination in your application." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify the number of records to retrieve per page, up to a maximum of 200. The default value is 200. This helps manage data transfer efficiency.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200. Use this parameter to control the size of each page of results. Maximum value is 200. Useful for optimizing data transfer and improving application performance." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_customer_debit_notes'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerdebitnotes", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "Organization ID for the request", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_name", + "tool_parameter_name": "search_item_name", + "description": "Search debit notes by item name. Filters debit notes based on product or service names in debit note line items. Supports item_name_startswith and item_name_contains variants. Maximum length is 100 characters. Useful for finding debit notes with specific products or services.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by item name. Filters debit notes based on product or service names in debit note line items. Supports item_name_startswith and item_name_contains variants. Maximum length is 100 characters. Useful for finding debit notes with specific products or services." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "search_by_item_id", + "description": "Search debit notes by item ID. Filters debit notes based on the unique identifier of specific products or services in line items. Use the GET `/items` API to find available item IDs. Useful for finding all debit notes containing a specific product or service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by item ID. Filters debit notes based on the unique identifier of specific products or services in line items. Use the GET `/items` API to find available item IDs. Useful for finding all debit notes containing a specific product or service." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_description", + "tool_parameter_name": "item_description_filter", + "description": "Search debit notes by item description. Filters debit notes based on detailed descriptions of products or services in line items. Supports item_description_startswith and item_description_contains variants. Maximum length is 100 characters. Useful for finding debit notes with specific item descriptions or technical specifications.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by item description. Filters debit notes based on detailed descriptions of products or services in line items. Supports item_description_startswith and item_description_contains variants. Maximum length is 100 characters. Useful for finding debit notes with specific item descriptions or technical specifications." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "search_by_customer_name", + "description": "Search debit notes by customer name. Filters debit notes based on the business or individual name associated with the debit note. Maximum length is 100 characters. Useful for finding all debit notes for a specific customer or generating customer reports.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by customer name. Filters debit notes based on the business or individual name associated with the debit note. Maximum length is 100 characters. Useful for finding all debit notes for a specific customer or generating customer reports." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "email", + "tool_parameter_name": "customer_email_filter", + "description": "Search debit notes by customer email address. Filters debit notes based on the email address of the customer or contact person. Maximum length is 100 characters. Useful for finding debit notes for specific customers or generating customer segment reports.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by customer email address. Filters debit notes based on the email address of the customer or contact person. Maximum length is 100 characters. Useful for finding debit notes for specific customers or generating customer segment reports." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "search_by_total_amount", + "description": "Search debit notes by total amount. Filters debit notes based on the final debit note amount including taxes, discounts, and adjustments. Useful for finding debit notes within specific price ranges or identifying high-value transactions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by total amount. Filters debit notes based on the final debit note amount including taxes, discounts, and adjustments. Useful for finding debit notes within specific price ranges or identifying high-value transactions." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "balance", + "tool_parameter_name": "search_by_outstanding_balance", + "description": "Search debit notes by outstanding balance. Filters debit notes based on the remaining unpaid amount owed by the customer. Useful for finding overdue debit notes, tracking receivables, or generating aging reports.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by outstanding balance. Filters debit notes based on the remaining unpaid amount owed by the customer. Useful for finding overdue debit notes, tracking receivables, or generating aging reports." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "custom_field", + "tool_parameter_name": "search_by_custom_field", + "description": "Search debit notes by custom fields.Variants: custom_field_startswith and custom_field_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by custom fields.Variants: custom_field_startswith and custom_field_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "search_date_range", + "description": "Search debit notes by debit note date. Filters debit notes based on the date they were created. Use yyyy-mm-dd format. Supports variants: date_start, date_end, date_before and date_after. Useful for finding debit notes within date ranges or specific time periods.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by debit note date. Filters debit notes based on the date they were created. Use yyyy-mm-dd format. Supports variants: date_start, date_end, date_before and date_after. Useful for finding debit notes within date ranges or specific time periods." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "due_date", + "tool_parameter_name": "filter_due_date", + "description": "Search debit notes by due date. Filters debit notes based on the payment due date. Use yyyy-mm-dd format. Supports variants: due_date_start, due_date_end, due_date_before and due_date_after. Useful for finding overdue debit notes or debit notes due within specific periods.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by due date. Filters debit notes based on the payment due date. Use yyyy-mm-dd format. Supports variants: due_date_start, due_date_end, due_date_before and due_date_after. Useful for finding overdue debit notes or debit notes due within specific periods." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "created_date", + "tool_parameter_name": "creation_date_filter", + "description": "Search debit notes by creation date. Filters debit notes based on the date they were created. Use yyyy-mm-dd format. Supports variants: created_date_start, created_date_end, created_date_before and created_date_after. Useful for finding debit notes created within specific time periods or date ranges.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by creation date. Filters debit notes based on the date they were created. Use yyyy-mm-dd format. Supports variants: created_date_start, created_date_end, created_date_before and created_date_after. Useful for finding debit notes created within specific time periods or date ranges." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "last_modified_timestamp", + "description": "Search debit notes modified after a specific time. Filters debit notes based on their last modification timestamp. Use YYYY-MM-DDTHH:MM:SS-UTC format. Useful for finding recently updated debit notes or syncing data changes. Example : 2023-11-18T02:02:51-0800, 2025-19-19T02:02:51%2B0800", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes modified after a specific time. Filters debit notes based on their last modification timestamp. Use YYYY-MM-DDTHH:MM:SS-UTC format. Useful for finding recently updated debit notes or syncing data changes. Example : 2023-11-18T02:02:51-0800, 2025-19-19T02:02:51%2B0800" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "status_filter", + "description": "Search debit notes by status. Filters debit notes based on their current state in the billing workflow. Allowed values: sent, draft, overdue, paid, void, unpaid, partially_paid and viewed. Useful for finding debit notes in specific stages of the billing process.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by status. Filters debit notes based on their current state in the billing workflow. Allowed values: sent, draft, overdue, paid, void, unpaid, partially_paid and viewed. Useful for finding debit notes in specific stages of the billing process." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "search_by_customer_id", + "description": "Search debit notes by customer ID. Filters debit notes based on the unique identifier of the customer for whom the debit note was created. Use the customer ID returned by the Contacts API to find all debit notes for a specific customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by customer ID. Filters debit notes based on the unique identifier of the customer for whom the debit note was created. Use the customer ID returned by the Contacts API to find all debit notes for a specific customer." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_by_debit_note_type", + "description": "Filter needs to be Type.DebitNote.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter needs to be Type.DebitNote." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "general_search_text", + "description": "Search debit notes by debit note number, purchase order, or customer name. This parameter performs a general search across multiple debit note fields. Maximum length is 100 characters. Useful for quick searches when you know part of the debit note information but are unsure which specific field to search.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search debit notes by debit note number, purchase order, or customer name. This parameter performs a general search across multiple debit note fields. Maximum length is 100 characters. Useful for quick searches when you know part of the debit note information but are unsure which specific field to search." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_debit_notes_by_column", + "description": "Sort debit notes by specific column. Allowed values: customer_name, debit_note_number, date, due_date, total, balance and created_time. Use this parameter to organize debit note results in a specific order for better data analysis and reporting.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort debit notes by specific column. Allowed values: customer_name, debit_note_number, date, due_date, total, balance and created_time. Use this parameter to organize debit note results in a specific order for better data analysis and reporting." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched from the paginated results. Default value is 1. Use this parameter along with per_page to navigate through large sets of debit note data. Useful for implementing pagination in your application.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched from the paginated results. Default value is 1. Use this parameter along with per_page to navigate through large sets of debit note data. Useful for implementing pagination in your application." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200. Use this parameter to control the size of each page of results. Maximum value is 200. Useful for optimizing data transfer and improving application performance.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200. Use this parameter to control the size of each page of results. Maximum value is 200. Useful for optimizing data transfer and improving application performance." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomerPaymentRefunds.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomerPaymentRefunds.json new file mode 100644 index 00000000..bc1cbde8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomerPaymentRefunds.json @@ -0,0 +1,220 @@ +{ + "name": "ListCustomerPaymentRefunds", + "fully_qualified_name": "ZohoBooksApi.ListCustomerPaymentRefunds@0.1.0", + "description": "Retrieve refunds for a specified customer payment.\n\nUse this tool to list all refunds related to a particular customer payment by providing the customer payment ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization. Required to specify which organization's data to access.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "customer_payment_identifier", + "required": true, + "description": "Unique identifier of the customer payment to retrieve associated refunds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_payment_id" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number to fetch. Defaults to 1 if not provided.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Defaults to 200 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_customer_payment_refunds'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "customer_payment_id", + "tool_parameter_name": "customer_payment_identifier", + "description": "Unique identifier of the customer payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomerPayments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomerPayments.json new file mode 100644 index 00000000..ab68744f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListCustomerPayments.json @@ -0,0 +1,517 @@ +{ + "name": "ListCustomerPayments", + "fully_qualified_name": "ZohoBooksApi.ListCustomerPayments@0.1.0", + "description": "List all payments made by your customers.\n\nUse this tool to retrieve a list of all the payments made by your customers. It is useful for financial analysis, reconciliation, or customer support purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization. Required to specify which organization's payments to list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "search_customer_name", + "required": false, + "description": "Filter payments by customer name using 'startswith' or 'contains' variants. Max length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by customer name. Variants: customer_name_startswith and customer_name_contains. Max-len [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "search_by_reference_number", + "required": false, + "description": "Search payments by reference number. Supports 'startswith' and 'contains' variants. Max-length 100.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by reference number. Variants: reference_number_startswith and reference_number_contains. Max-len [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "payment_date", + "required": false, + "description": "Specify the date of the customer payment in YYYY-MM-DD format to filter results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "payment_amount_filter", + "required": false, + "description": "Filter payments by amount using variants: less_than, less_equals, greater_than, or greater_equals.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by payment amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_equals" + }, + "inferrable": true, + "http_endpoint_parameter_name": "amount" + }, + { + "name": "search_by_customer_notes", + "required": false, + "description": "Search payments using customer notes, supporting 'startswith' and 'contains' variants.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by customer notes. Variants: notes_startswith and notes_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "notes" + }, + { + "name": "payment_mode_filter", + "required": false, + "description": "Filter payments by specifying the payment mode. Use 'startswith' or 'contains' for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by payment mode. Variants: payment_mode_startswith and payment_mode_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_mode" + }, + { + "name": "filter_payments_by_mode", + "required": false, + "description": "Filter payments by the payment mode. Accepted values include: All, Check, Cash, BankTransfer, Paypal, CreditCard, GoogleCheckout, Credit, Authorizenet, BankRemittance, Payflowpro, Stripe, TwoCheckout, Braintree, Others.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter payments by mode.Allowed Values: PaymentMode.All, PaymentMode.Check, PaymentMode.Cash, PaymentMode.BankTransfer, PaymentMode.Paypal, PaymentMode.CreditCard, PaymentMode.GoogleCheckout, PaymentMode.Credit, PaymentMode.Authorizenet, PaymentMode.BankRemittance, PaymentMode.Payflowpro, PaymentMode.Stripe, PaymentMode.TwoCheckout, PaymentMode.Braintree and PaymentMode.Others" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "sort_column", + "required": false, + "description": "Specify the column to sort the payments by. Common options include date, amount, or customer name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "search_term_for_payments", + "required": false, + "description": "Search payments by reference number, customer name, or payment description. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by reference number or customer name or payment description. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "customer_id", + "required": false, + "description": "The unique identifier for the customer involved in the payment. Use this to target specific customer transactions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer involved in the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "The page number of payment records to be retrieved. Defaults to 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to be fetched per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_customer_payments'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "search_customer_name", + "description": "Search payments by customer name. Variants: customer_name_startswith and customer_name_contains. Max-len [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by customer name. Variants: customer_name_startswith and customer_name_contains. Max-len [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "search_by_reference_number", + "description": "Search payments by reference number. Variants: reference_number_startswith and reference_number_contains. Max-len [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by reference number. Variants: reference_number_startswith and reference_number_contains. Max-len [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "payment_date", + "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": "amount", + "tool_parameter_name": "payment_amount_filter", + "description": "Search payments by payment amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_equals", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by payment amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_equals" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "notes", + "tool_parameter_name": "search_by_customer_notes", + "description": "Search payments by customer notes. Variants: notes_startswith and notes_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by customer notes. Variants: notes_startswith and notes_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_mode", + "tool_parameter_name": "payment_mode_filter", + "description": "Search payments by payment mode. Variants: payment_mode_startswith and payment_mode_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by payment mode. Variants: payment_mode_startswith and payment_mode_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_payments_by_mode", + "description": "Filter payments by mode.Allowed Values: PaymentMode.All, PaymentMode.Check, PaymentMode.Cash, PaymentMode.BankTransfer, PaymentMode.Paypal, PaymentMode.CreditCard, PaymentMode.GoogleCheckout, PaymentMode.Credit, PaymentMode.Authorizenet, PaymentMode.BankRemittance, PaymentMode.Payflowpro, PaymentMode.Stripe, PaymentMode.TwoCheckout, PaymentMode.Braintree and PaymentMode.Others", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter payments by mode.Allowed Values: PaymentMode.All, PaymentMode.Check, PaymentMode.Cash, PaymentMode.BankTransfer, PaymentMode.Paypal, PaymentMode.CreditCard, PaymentMode.GoogleCheckout, PaymentMode.Credit, PaymentMode.Authorizenet, PaymentMode.BankRemittance, PaymentMode.Payflowpro, PaymentMode.Stripe, PaymentMode.TwoCheckout, PaymentMode.Braintree and PaymentMode.Others" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_column", + "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": "search_text", + "tool_parameter_name": "search_term_for_payments", + "description": "Search payments by reference number or customer name or payment description. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by reference number or customer name or payment description. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "customer_id", + "description": "Customer ID of the customer involved in the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer involved in the payment." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListEstimates.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListEstimates.json new file mode 100644 index 00000000..a9eb243c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListEstimates.json @@ -0,0 +1,715 @@ +{ + "name": "ListEstimates", + "fully_qualified_name": "ZohoBooksApi.ListEstimates@0.1.0", + "description": "Retrieve a list of all estimates with pagination.\n\nUse this tool to fetch all estimates, including pagination information, from Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Specifies the ID of the organization to filter the estimates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_number_filter", + "required": false, + "description": "Specify an estimate number or use variants like 'startswith' or 'contains' for partial matching to filter estimates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by their unique estimate number. Supports variants such as estimate_number_startswith and estimate_number_contains for partial matches. Useful for quickly locating a specific estimate or a group of estimates with similar numbering." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_number" + }, + { + "name": "reference_number_filter", + "required": false, + "description": "Filter or search estimates by their reference number. Supports partial matches using 'startswith' and 'contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by their reference number. Supports variants such as reference_number_startswith and reference_number_contains for partial matches. Useful for linking estimates to external systems, customer requests, or internal workflows." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "customer_name", + "required": false, + "description": "Search estimates by customer's name with optional variants for partial matches, such as 'startswith' and 'contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by the customer\u2019s name. Supports variants such as customer_name_startswith and customer_name_contains for partial matches. Useful for quickly locating all estimates associated with a specific customer or group of customers with similar names." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "total_filter", + "required": false, + "description": "Specify a condition to search estimates by their total amount. Use variants like 'less_than', 'less_equals', 'greater_than', and 'greater_equals' for range queries.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by the total amount of the estimate. Supports variants such as total_less_than, total_less_equals, total_greater_than, and total_greater_equals for range-based queries. Useful for finding estimates within a specific budget or identifying high-value quotes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "filter_by_customer_id", + "required": false, + "description": "Filter or search estimates using the unique customer ID. Use the `customer_id` provided by the Contacts API for the same organization to retrieve estimates linked to a specific customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by the unique customer ID. Use the customer_id returned by the Contacts API for the same organization. This helps you retrieve all estimates linked to a specific customer." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "filter_by_item_id", + "required": false, + "description": "Filter or search estimates by the unique item ID. Use the item_id returned by the Items API for the same organization to find estimates including a specific product or service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by the unique item ID. Use the item_id returned by the Items API for the same organization. This allows you to find all estimates that include a specific product or service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "item_name_filter", + "required": false, + "description": "Search estimates by item name. Supports variants like 'item_name_startswith' and 'item_name_contains' for partial matches.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by item name.Variants item_name_startswith and item_name_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_name" + }, + { + "name": "search_by_item_description", + "required": false, + "description": "Search estimates by item description. Use variants 'item_description_startswith' and 'item_description_contains' for pattern matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by item description.Variantsitem_description_startswith and item_description_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_description" + }, + { + "name": "search_by_custom_field", + "required": false, + "description": "Search estimates by a custom field, supporting variants like 'startswith' or 'contains' for partial matches. Useful for identifying estimates linked to specific custom data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by custom field.Variantscustom_field_startswith and custom_field_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_field" + }, + { + "name": "expiry_date", + "required": false, + "description": "Specify the expiration date of the estimates to filter the results. Use the format YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of expiration of the estimates" + }, + "inferrable": true, + "http_endpoint_parameter_name": "expiry_date" + }, + { + "name": "estimate_date_filter", + "required": false, + "description": "Search estimates by date using variants like 'date_start', 'date_end', 'date_before', or 'date_after'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate date.Variants date_start, date_end, date_before and date_after" + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "estimate_status_filter", + "required": false, + "description": "Filter estimates by status. Allowed values: draft, sent, invoiced, accepted, declined, expired.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by status.Allowed Valuesdraft, sent, invoiced , accepted, declined and expired" + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "filter_estimates_by_status", + "required": false, + "description": "Specify the status to filter estimates. Allowed values: Status.All, Status.Sent, Status.Draft, Status.Invoiced, Status.Accepted, Status.Declined, Status.Expired.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter estimates by status.Allowed Values Status.All, Status.Sent, Status.Draft, Status.Invoiced, Status.Accepted, Status.Declined and Status.Expired" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "keyword_search", + "required": false, + "description": "Keyword search across estimate number, reference number, or customer name to quickly find matching estimates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Perform a keyword search across estimate number, reference number, or customer name. Use this parameter to quickly find estimates that match any of these fields, making it easier to locate relevant records with minimal input." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_estimates_by_column", + "required": false, + "description": "Specify the column to sort estimates by. Options: customer_name, estimate_number, date, total, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort estimates. Allowed Values customer_name, estimate_number, date, total and created_time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "deal_potential_id", + "required": false, + "description": "Potential ID of a Deal in CRM. Use this to filter estimates linked to specific deals.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Potential ID of a Deal in CRM." + }, + "inferrable": true, + "http_endpoint_parameter_name": "zcrm_potential_id" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number to fetch. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_estimates'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_number", + "tool_parameter_name": "estimate_number_filter", + "description": "Filter or search estimates by their unique estimate number. Supports variants such as estimate_number_startswith and estimate_number_contains for partial matches. Useful for quickly locating a specific estimate or a group of estimates with similar numbering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by their unique estimate number. Supports variants such as estimate_number_startswith and estimate_number_contains for partial matches. Useful for quickly locating a specific estimate or a group of estimates with similar numbering." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "reference_number_filter", + "description": "Filter or search estimates by their reference number. Supports variants such as reference_number_startswith and reference_number_contains for partial matches. Useful for linking estimates to external systems, customer requests, or internal workflows.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by their reference number. Supports variants such as reference_number_startswith and reference_number_contains for partial matches. Useful for linking estimates to external systems, customer requests, or internal workflows." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "customer_name", + "description": "Filter or search estimates by the customer\u2019s name. Supports variants such as customer_name_startswith and customer_name_contains for partial matches. Useful for quickly locating all estimates associated with a specific customer or group of customers with similar names.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by the customer\u2019s name. Supports variants such as customer_name_startswith and customer_name_contains for partial matches. Useful for quickly locating all estimates associated with a specific customer or group of customers with similar names." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "total_filter", + "description": "Filter or search estimates by the total amount of the estimate. Supports variants such as total_less_than, total_less_equals, total_greater_than, and total_greater_equals for range-based queries. Useful for finding estimates within a specific budget or identifying high-value quotes.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by the total amount of the estimate. Supports variants such as total_less_than, total_less_equals, total_greater_than, and total_greater_equals for range-based queries. Useful for finding estimates within a specific budget or identifying high-value quotes." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "filter_by_customer_id", + "description": "Filter or search estimates by the unique customer ID. Use the customer_id returned by the Contacts API for the same organization. This helps you retrieve all estimates linked to a specific customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by the unique customer ID. Use the customer_id returned by the Contacts API for the same organization. This helps you retrieve all estimates linked to a specific customer." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "filter_by_item_id", + "description": "Filter or search estimates by the unique item ID. Use the item_id returned by the Items API for the same organization. This allows you to find all estimates that include a specific product or service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter or search estimates by the unique item ID. Use the item_id returned by the Items API for the same organization. This allows you to find all estimates that include a specific product or service." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_name", + "tool_parameter_name": "item_name_filter", + "description": "Search estimates by item name.Variants item_name_startswith and item_name_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by item name.Variants item_name_startswith and item_name_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_description", + "tool_parameter_name": "search_by_item_description", + "description": "Search estimates by item description.Variantsitem_description_startswith and item_description_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by item description.Variantsitem_description_startswith and item_description_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "custom_field", + "tool_parameter_name": "search_by_custom_field", + "description": "Search estimates by custom field.Variantscustom_field_startswith and custom_field_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by custom field.Variantscustom_field_startswith and custom_field_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expiry_date", + "tool_parameter_name": "expiry_date", + "description": "The date of expiration of the estimates", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of expiration of the estimates" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "estimate_date_filter", + "description": "Search estimates by estimate date.Variants date_start, date_end, date_before and date_after", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate date.Variants date_start, date_end, date_before and date_after" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "estimate_status_filter", + "description": "Search estimates by status.Allowed Valuesdraft, sent, invoiced , accepted, declined and expired", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by status.Allowed Valuesdraft, sent, invoiced , accepted, declined and expired" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_estimates_by_status", + "description": "Filter estimates by status.Allowed Values Status.All, Status.Sent, Status.Draft, Status.Invoiced, Status.Accepted, Status.Declined and Status.Expired", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter estimates by status.Allowed Values Status.All, Status.Sent, Status.Draft, Status.Invoiced, Status.Accepted, Status.Declined and Status.Expired" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "keyword_search", + "description": "Perform a keyword search across estimate number, reference number, or customer name. Use this parameter to quickly find estimates that match any of these fields, making it easier to locate relevant records with minimal input.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Perform a keyword search across estimate number, reference number, or customer name. Use this parameter to quickly find estimates that match any of these fields, making it easier to locate relevant records with minimal input." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_estimates_by_column", + "description": "Sort estimates. Allowed Values customer_name, estimate_number, date, total and created_time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort estimates. Allowed Values customer_name, estimate_number, date, total and created_time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "zcrm_potential_id", + "tool_parameter_name": "deal_potential_id", + "description": "Potential ID of a Deal in CRM.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Potential ID of a Deal in CRM." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListExpenses.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListExpenses.json new file mode 100644 index 00000000..3ff71d42 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListExpenses.json @@ -0,0 +1,682 @@ +{ + "name": "ListExpenses", + "fully_qualified_name": "ZohoBooksApi.ListExpenses@0.1.0", + "description": "Retrieve a list of expenses with pagination.\n\nUse this tool to get a paginated list of all expenses recorded in the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization whose expenses are being queried.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "search_by_description", + "required": false, + "description": "Search expenses by description, supports 'description_startswith' and 'description_contains'. Max-length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by description.Variants description_startswith and description_contains. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "description" + }, + { + "name": "search_by_reference_number", + "required": false, + "description": "Search expenses by part or complete reference number using 'startswith' or 'contains'. Max-length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by reference number. Variants reference_number_startswith and reference_number_contains. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "filter_by_date", + "required": false, + "description": "Search expenses by expense date. Use variants: date_start, date_end, date_before, or date_after. Format [yyyy-mm-dd].", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense date. Variants date_start, date_end, date_before and date_after. Format [yyyy-mm-dd]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "expense_status", + "required": false, + "description": "Search expenses by status. Allowed values: unbilled, invoiced, reimbursed, non-billable, billable.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense status. Allowed Values unbilled, invoiced, reimbursed, non-billable and billable" + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "amount_filter", + "required": false, + "description": "Search expenses by amount using the variants: less_than, less_equals, greater_than, or greater_equals.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_than" + }, + "inferrable": true, + "http_endpoint_parameter_name": "amount" + }, + { + "name": "search_expense_account_name", + "required": false, + "description": "Search expenses by account name. Use 'startswith:' or 'contains:'. Max length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense account name. Variants account_name_startswith and account_name_contains. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_name" + }, + { + "name": "customer_name_filter", + "required": false, + "description": "Filter expenses by customer name. Supports 'startswith' and 'contains' variants. Max length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer name. Variants: customer_name_startswith and customer_name_contains. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "vendor_name_filter", + "required": false, + "description": "Filter expenses by vendor name using 'vendor_name_startswith' or 'vendor_name_contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by vendor name. Variants: vendor_name_startswith and vendor_name_contains." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_name" + }, + { + "name": "expense_account_customer_id", + "required": false, + "description": "The ID of the expense account for the customer. Use this to filter expenses specific to a customer's account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "vendor_id", + "required": false, + "description": "ID of the vendor associated with the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the expense is made." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_id" + }, + { + "name": "recurring_expense_id", + "required": false, + "description": "The ID used to search for expenses associated with a recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by recurring expense id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_expense_id" + }, + { + "name": "paid_through_account_id", + "required": false, + "description": "The ID of the account through which the expense was paid.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "paid_through_account_id" + }, + { + "name": "search_expenses_text", + "required": false, + "description": "Search expenses by account name, description, customer name, or vendor name. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by account name or description or customer name or vendor name. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_expenses_by", + "required": false, + "description": "Sort expenses by the specified column. Allowed values: date, account_name, total, bcy_total, reference_number, customer_name, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort expenses.Allowed Values date, account_name, total, bcy_total, reference_number, customer_name and created_time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "expense_status_filter", + "required": false, + "description": "Filter expenses by status. Allowed values: 'Status.All', 'Status.Billable', 'Status.Nonbillable', 'Status.Reimbursed', 'Status.Invoiced', 'Status.Unbilled'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter expenses by expense status. Allowed Values Status.All, Status.Billable, Status.Nonbillable, Status.Reimbursed, Status.Invoicedand Status.Unbilled" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "page_number", + "required": false, + "description": "Page number to fetch, with the default starting at 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of expense records to fetch per page. Defaults to 200 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_expenses'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "description", + "tool_parameter_name": "search_by_description", + "description": "Search expenses by description.Variants description_startswith and description_contains. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by description.Variants description_startswith and description_contains. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "search_by_reference_number", + "description": "Search expenses by reference number. Variants reference_number_startswith and reference_number_contains. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by reference number. Variants reference_number_startswith and reference_number_contains. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "filter_by_date", + "description": "Search expenses by expense date. Variants date_start, date_end, date_before and date_after. Format [yyyy-mm-dd]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense date. Variants date_start, date_end, date_before and date_after. Format [yyyy-mm-dd]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "expense_status", + "description": "Search expenses by expense status. Allowed Values unbilled, invoiced, reimbursed, non-billable and billable", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense status. Allowed Values unbilled, invoiced, reimbursed, non-billable and billable" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "amount", + "tool_parameter_name": "amount_filter", + "description": "Search expenses by amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_than", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_than" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_name", + "tool_parameter_name": "search_expense_account_name", + "description": "Search expenses by expense account name. Variants account_name_startswith and account_name_contains. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense account name. Variants account_name_startswith and account_name_contains. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "customer_name_filter", + "description": "Search expenses by customer name. Variants: customer_name_startswith and customer_name_contains. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer name. Variants: customer_name_startswith and customer_name_contains. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_name", + "tool_parameter_name": "vendor_name_filter", + "description": "Search expenses by vendor name. Variants: vendor_name_startswith and vendor_name_contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by vendor name. Variants: vendor_name_startswith and vendor_name_contains." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "expense_account_customer_id", + "description": "ID of the expense account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_id", + "tool_parameter_name": "vendor_id", + "description": "ID of the vendor the expense is made.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the expense is made." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_expense_id", + "tool_parameter_name": "recurring_expense_id", + "description": "Search expenses by recurring expense id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by recurring expense id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "paid_through_account_id", + "tool_parameter_name": "paid_through_account_id", + "description": "Search expenses by paid through account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_expenses_text", + "description": "Search expenses by account name or description or customer name or vendor name. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by account name or description or customer name or vendor name. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_expenses_by", + "description": "Sort expenses.Allowed Values date, account_name, total, bcy_total, reference_number, customer_name and created_time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort expenses.Allowed Values date, account_name, total, bcy_total, reference_number, customer_name and created_time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "expense_status_filter", + "description": "Filter expenses by expense status. Allowed Values Status.All, Status.Billable, Status.Nonbillable, Status.Reimbursed, Status.Invoicedand Status.Unbilled", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter expenses by expense status. Allowed Values Status.All, Status.Billable, Status.Nonbillable, Status.Reimbursed, Status.Invoicedand Status.Unbilled" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListInventoryLocations.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListInventoryLocations.json new file mode 100644 index 00000000..abfd2b6f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListInventoryLocations.json @@ -0,0 +1,121 @@ +{ + "name": "ListInventoryLocations", + "fully_qualified_name": "ZohoBooksApi.ListInventoryLocations@0.1.0", + "description": "Retrieve all available locations from Zoho Inventory.\n\nUse this tool to get a comprehensive list of all the available locations in your Zoho Inventory. It should be called when you need to access inventory location details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_locations'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/locations", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListInvoiceTemplates.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListInvoiceTemplates.json new file mode 100644 index 00000000..302284ff --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListInvoiceTemplates.json @@ -0,0 +1,121 @@ +{ + "name": "ListInvoiceTemplates", + "fully_qualified_name": "ZohoBooksApi.ListInvoiceTemplates@0.1.0", + "description": "Fetch all invoice PDF templates from Zoho Books.\n\nThis tool retrieves a list of all available invoice PDF templates in Zoho Books. Use this to access template options for invoices.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to fetch invoice templates for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_invoice_templates'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/templates", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListOrganizations.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListOrganizations.json new file mode 100644 index 00000000..ae0463cf --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListOrganizations.json @@ -0,0 +1,121 @@ +{ + "name": "ListOrganizations", + "fully_qualified_name": "ZohoBooksApi.ListOrganizations@0.1.0", + "description": "Retrieve the list of organizations from Zoho Books.\n\nUse this tool to obtain a list of all organizations associated with the user's Zoho Books account. It is useful for managing and accessing organization-specific data or settings.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to list details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_organizations'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/organizations", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListProjectInvoices.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListProjectInvoices.json new file mode 100644 index 00000000..4f1af726 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListProjectInvoices.json @@ -0,0 +1,253 @@ +{ + "name": "ListProjectInvoices", + "fully_qualified_name": "ZohoBooksApi.ListProjectInvoices@0.1.0", + "description": "Retrieve invoices for a specific project in Zoho Books.\n\nCall this endpoint to obtain a list of all invoices associated with a particular project within Zoho Books. This tool is useful when you need to review or manage billing details for project-based work.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is required to access the specific organization's project invoices.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_unique_identifier", + "required": true, + "description": "Unique identifier for the specific project to retrieve invoices for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "sort_invoices_by", + "required": false, + "description": "Specify the column to sort invoices by. Options are: 'invoice_number', 'date', 'total', 'balance', 'created_time'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort invoices raised. Allowed Values: invoice_number, date, total, balance and created_time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "Specify the page number to retrieve from the list of invoices. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "The number of invoice records to fetch per page. Defaults to 200 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_project_invoices'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/invoices", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_invoices_by", + "description": "Sort invoices raised. Allowed Values: invoice_number, date, total, balance and created_time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort invoices raised. Allowed Values: invoice_number, date, total, balance and created_time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_unique_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListProjectUsers.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListProjectUsers.json new file mode 100644 index 00000000..b50ad12b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListProjectUsers.json @@ -0,0 +1,154 @@ +{ + "name": "ListProjectUsers", + "fully_qualified_name": "ZohoBooksApi.ListProjectUsers@0.1.0", + "description": "Get a list of users associated with a project.\n\nUse this tool to retrieve users linked to a specific project in Zoho Books. This is useful for managing project collaborations and assignments.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID representing the organization in Zoho Books. Required to access project users.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "Unique identifier for the project to retrieve associated users.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_project_users'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/users", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListProjects.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListProjects.json new file mode 100644 index 00000000..899cc2ce --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListProjects.json @@ -0,0 +1,286 @@ +{ + "name": "ListProjects", + "fully_qualified_name": "ZohoBooksApi.ListProjects@0.1.0", + "description": "Retrieve a list of all projects with pagination.\n\nThis tool is used to get a list of all projects from Zoho Books, with support for pagination. Call this tool to retrieve project data when managing tasks or resources.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which to list projects.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "filter_projects_by_status", + "required": false, + "description": "Filter projects by status. Use Status.All, Status.Active, or Status.Inactive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter projects by any status. Allowed Values: Status.All, Status.Active and Status.Inactive" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_by_customer_id", + "required": false, + "description": "Search projects using the customer's ID to filter results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search projects by customer id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "sort_projects_by", + "required": false, + "description": "Sort projects by project name, customer name, rate, or created time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort projects. Allowed Values: project_name, customer_name, rate and created_time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number to retrieve. Defaults to 1 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Defaults to 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_projects'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_projects_by_status", + "description": "Filter projects by any status. Allowed Values: Status.All, Status.Active and Status.Inactive", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter projects by any status. Allowed Values: Status.All, Status.Active and Status.Inactive" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "search_by_customer_id", + "description": "Search projects by customer id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search projects by customer id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_projects_by", + "description": "Sort projects. Allowed Values: project_name, customer_name, rate and created_time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort projects. Allowed Values: project_name, customer_name, rate and created_time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListPurchaseOrders.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListPurchaseOrders.json new file mode 100644 index 00000000..c5fe7452 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListPurchaseOrders.json @@ -0,0 +1,649 @@ +{ + "name": "ListPurchaseOrders", + "fully_qualified_name": "ZohoBooksApi.ListPurchaseOrders@0.1.0", + "description": "Retrieve a list of all purchase orders.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to filter purchase orders.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "search_by_purchaseorder_number", + "required": false, + "description": "Search purchase order by number. Supports exact, starts with, and contains variants.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by purchase order number. Variants: purchaseorder_number_startswith and purchaseorder_number_contains. Example: Locate specific PO by number or partial match." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_number" + }, + { + "name": "reference_number_search", + "required": false, + "description": "Search for a purchase order using the exact or partial reference number. Supports 'startswith' and 'contains' methods.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by reference number. Variants: reference_number_startswith and reference_number_contains. Example: Monitor external vendor order numbers." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "creation_date", + "required": false, + "description": "Creation date for purchase order search in YYYY-MM-DD format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by creation date. Use YYYY-MM-DD format for exact date matching. Example: Retrieve POs created on specific date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "purchase_order_status", + "required": false, + "description": "Filter purchase orders by status. Options: draft, open, billed, cancelled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by status. Allowed values: draft, open, billed, cancelled. Example: Filter POs by current workflow state." + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "search_by_item_description", + "required": false, + "description": "Search purchase orders by item description. Use partial matches or specific description. Includes variants like 'startswith' and 'contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by item description. Variants: item_description_startswith and item_description_contains. Example: Discover POs containing specific items." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_description" + }, + { + "name": "vendor_name", + "required": false, + "description": "Search purchase orders by vendor name with optional 'startswith' or 'contains' variants.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by vendor name. Variants: vendor_name_startswith and vendor_name_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_name" + }, + { + "name": "total_amount_filter", + "required": false, + "description": "Filter purchase orders by total amount. Use options like 'start', 'end', 'less_than', 'less_equals', 'greater_than', 'greater_equals' to specify the range or comparison.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by total amount. Variants: total_start, total_end, total_less_than, total_less_equals, total_greater_than, total_greater_equals. Example: Identify POs within price range." + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "vendor_identifier", + "required": false, + "description": "Specify the unique ID of the vendor to filter purchase orders. Useful for grouping POs by a specific vendor.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by vendor ID. Use the unique identifier of the vendor to filter purchase orders. Example: Group POs by specific vendor." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_id" + }, + { + "name": "search_by_last_modified_time", + "required": false, + "description": "ISO 8601 format (YYYY-MM-DDTHH:MM:SS\u00b1HH:MM) to filter POs by last modified time. For finding recently updated POs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by last modified time. Use ISO 8601 format (YYYY-MM-DDTHH:MM:SS\u00b1HH:MM). Example: Identify recently updated POs." + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "search_by_item_id", + "required": false, + "description": "Search purchase orders using the unique item ID to find POs containing a specific item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by item ID. Use the unique identifier of the specific item. Example: Locate all POs containing particular item." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "status_filter", + "required": false, + "description": "Filter purchase orders by status. Use 'Status.All', 'Status.Draft', 'Status.Open', 'Status.Billed', or 'Status.Cancelled'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter purchase order by status. Allowed values: Status.All, Status.Draft, Status.Open, Status.Billed, Status.Cancelled. Example: Bulk status filtering for reporting." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_purchase_order_text", + "required": false, + "description": "Search for purchase orders by number, reference, or vendor name. Allows general searching across multiple fields for quick lookup.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by number, reference, or vendor name. General search across multiple fields. Example: Quick PO lookup without specific field." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Column to sort purchase orders by. Options: vendor_name, purchaseorder_number, date, delivery_date, total, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort purchase orders by column. Allowed values: vendor_name, purchaseorder_number, date, delivery_date, total, created_time. Example: Organize results for analysis." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "search_by_custom_field", + "required": false, + "description": "Search purchase orders using custom field criteria. Supports 'startswith' and 'contains' variants.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by purchase order\u2019s custom field. Variants: custom_field_startswith, custom_field_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_field" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number to fetch, with a default value of 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specifies the number of purchase orders to retrieve per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_purchase_orders'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_number", + "tool_parameter_name": "search_by_purchaseorder_number", + "description": "Search purchase order by purchase order number. Variants: purchaseorder_number_startswith and purchaseorder_number_contains. Example: Locate specific PO by number or partial match.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by purchase order number. Variants: purchaseorder_number_startswith and purchaseorder_number_contains. Example: Locate specific PO by number or partial match." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "reference_number_search", + "description": "Search purchase order by reference number. Variants: reference_number_startswith and reference_number_contains. Example: Monitor external vendor order numbers.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by reference number. Variants: reference_number_startswith and reference_number_contains. Example: Monitor external vendor order numbers." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "creation_date", + "description": "Search purchase order by creation date. Use YYYY-MM-DD format for exact date matching. Example: Retrieve POs created on specific date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by creation date. Use YYYY-MM-DD format for exact date matching. Example: Retrieve POs created on specific date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "purchase_order_status", + "description": "Search purchase order by status. Allowed values: draft, open, billed, cancelled. Example: Filter POs by current workflow state.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by status. Allowed values: draft, open, billed, cancelled. Example: Filter POs by current workflow state." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_description", + "tool_parameter_name": "search_by_item_description", + "description": "Search purchase order by item description. Variants: item_description_startswith and item_description_contains. Example: Discover POs containing specific items.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by item description. Variants: item_description_startswith and item_description_contains. Example: Discover POs containing specific items." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_name", + "tool_parameter_name": "vendor_name", + "description": "Search purchase order by vendor name. Variants: vendor_name_startswith and vendor_name_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by vendor name. Variants: vendor_name_startswith and vendor_name_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "total_amount_filter", + "description": "Search purchase order by total amount. Variants: total_start, total_end, total_less_than, total_less_equals, total_greater_than, total_greater_equals. Example: Identify POs within price range.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by total amount. Variants: total_start, total_end, total_less_than, total_less_equals, total_greater_than, total_greater_equals. Example: Identify POs within price range." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_id", + "tool_parameter_name": "vendor_identifier", + "description": "Search purchase order by vendor ID. Use the unique identifier of the vendor to filter purchase orders. Example: Group POs by specific vendor.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by vendor ID. Use the unique identifier of the vendor to filter purchase orders. Example: Group POs by specific vendor." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "search_by_last_modified_time", + "description": "Search purchase order by last modified time. Use ISO 8601 format (YYYY-MM-DDTHH:MM:SS\u00b1HH:MM). Example: Identify recently updated POs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by last modified time. Use ISO 8601 format (YYYY-MM-DDTHH:MM:SS\u00b1HH:MM). Example: Identify recently updated POs." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "search_by_item_id", + "description": "Search purchase order by item ID. Use the unique identifier of the specific item. Example: Locate all POs containing particular item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by item ID. Use the unique identifier of the specific item. Example: Locate all POs containing particular item." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "status_filter", + "description": "Filter purchase order by status. Allowed values: Status.All, Status.Draft, Status.Open, Status.Billed, Status.Cancelled. Example: Bulk status filtering for reporting.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter purchase order by status. Allowed values: Status.All, Status.Draft, Status.Open, Status.Billed, Status.Cancelled. Example: Bulk status filtering for reporting." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_purchase_order_text", + "description": "Search purchase order by number, reference, or vendor name. General search across multiple fields. Example: Quick PO lookup without specific field.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by number, reference, or vendor name. General search across multiple fields. Example: Quick PO lookup without specific field." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "description": "Sort purchase orders by column. Allowed values: vendor_name, purchaseorder_number, date, delivery_date, total, created_time. Example: Organize results for analysis.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort purchase orders by column. Allowed values: vendor_name, purchaseorder_number, date, delivery_date, total, created_time. Example: Organize results for analysis." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "custom_field", + "tool_parameter_name": "search_by_custom_field", + "description": "Search purchase order by purchase order\u2019s custom field. Variants: custom_field_startswith, custom_field_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search purchase order by purchase order\u2019s custom field. Variants: custom_field_startswith, custom_field_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListRecurringExpenses.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListRecurringExpenses.json new file mode 100644 index 00000000..6968539f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListRecurringExpenses.json @@ -0,0 +1,616 @@ +{ + "name": "ListRecurringExpenses", + "fully_qualified_name": "ZohoBooksApi.ListRecurringExpenses@0.1.0", + "description": "Retrieve all recurring expenses from your records.\n\nUse this tool to fetch a list of all recurring expenses. Ideal for situations where you need to review or manage periodic expenses systematically.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization whose recurring expenses need to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_expense_name_filter", + "required": false, + "description": "Filter recurring expenses by name using either 'startswith' or 'contains'. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by recurring expense name. Variants: recurrence_name_startswith and recurrence_name_contains. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurrence_name" + }, + { + "name": "search_by_last_created_date", + "required": false, + "description": "Filter recurring expenses based on last generated expense date. Use formats: last_created_date_start, last_created_date_end, last_created_date_before, last_created_date_after with date [yyyy-mm-dd].", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by date on when last expense was generated. Variants: last_created_date_start, last_created_date_end, last_created_date_before and last_created_date_after . Format [yyyy-mm-dd]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_created_date" + }, + { + "name": "filter_by_next_expense_date", + "required": false, + "description": "Filter recurring expenses by dates related to the next expected expense. Options include 'next_expense_date_start', 'next_expense_date_end', 'next_expense_date_before', and 'next_expense_date_after'. Format is 'yyyy-mm-dd'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by date on which next expense will be generated. Variants: next_expense_date_start, next_expense_date_end, next_expense_date_before and next_expense_date_after . Format [yyyy-mm-dd]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "next_expense_date" + }, + { + "name": "expense_status", + "required": false, + "description": "Specify the status of expenses to search for. Allowed values are 'active', 'stopped', and 'expired'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense status. Allowed Values active, stopped and expired" + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "account_id_for_expense", + "required": false, + "description": "Specify the unique identifier for the expense account to filter expenses associated with it.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "filter_by_account_name", + "required": false, + "description": "Search expenses by account name with options for exact match or partial match using 'startswith' and 'contains'. Max-length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense account name. Variants account_name_startswith and account_name_contains . Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_name" + }, + { + "name": "amount_filter", + "required": false, + "description": "Specify a filter for expense amounts, such as 'amount_less_than', 'amount_less_equals', 'amount_greater_than', or 'amount_greater_than'.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_than" + }, + "inferrable": true, + "http_endpoint_parameter_name": "amount" + }, + { + "name": "search_by_customer_name", + "required": false, + "description": "Search recurring expenses by customer name. Use variants 'customer_name_startswith' or 'customer_name_contains'. Max 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer name. Variants: customer_name_startswith and customer_name_contains . Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "search_by_customer_id", + "required": false, + "description": "Specify the customer ID to search expenses associated with that customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "paid_through_account_id", + "required": false, + "description": "ID of the account through which the expense was paid. Used to filter expenses.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "paid_through_account_id" + }, + { + "name": "expense_status_filter", + "required": false, + "description": "Filter recurring expenses by their status. Use 'Status.All', 'Status.Active', 'Status.Expired', or 'Status.Stopped'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter expenses by expense status. Allowed Values Status.All, Status.Active, Status.Expired and Status.Stopped" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_expenses_by_text", + "required": false, + "description": "Specify text to search expenses by account name, description, customer name, or vendor name. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by account name or description or customer name or vendor name. Max-length [100] ." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_expenses_by_column", + "required": false, + "description": "Specify the column to sort expenses by. Allowed values: next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort expenses.Allowed Values next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name and created_time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "The page number of records to retrieve, starting from 1. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify how many records to retrieve per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_recurring_expenses'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurrence_name", + "tool_parameter_name": "recurring_expense_name_filter", + "description": "Search recurring expenses by recurring expense name. Variants: recurrence_name_startswith and recurrence_name_contains. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by recurring expense name. Variants: recurrence_name_startswith and recurrence_name_contains. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_created_date", + "tool_parameter_name": "search_by_last_created_date", + "description": "Search recurring expenses by date on when last expense was generated. Variants: last_created_date_start, last_created_date_end, last_created_date_before and last_created_date_after . Format [yyyy-mm-dd]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by date on when last expense was generated. Variants: last_created_date_start, last_created_date_end, last_created_date_before and last_created_date_after . Format [yyyy-mm-dd]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "next_expense_date", + "tool_parameter_name": "filter_by_next_expense_date", + "description": "Search recurring expenses by date on which next expense will be generated. Variants: next_expense_date_start, next_expense_date_end, next_expense_date_before and next_expense_date_after . Format [yyyy-mm-dd]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by date on which next expense will be generated. Variants: next_expense_date_start, next_expense_date_end, next_expense_date_before and next_expense_date_after . Format [yyyy-mm-dd]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "expense_status", + "description": "Search expenses by expense status. Allowed Values active, stopped and expired", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense status. Allowed Values active, stopped and expired" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_id_for_expense", + "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_name", + "tool_parameter_name": "filter_by_account_name", + "description": "Search expenses by expense account name. Variants account_name_startswith and account_name_contains . Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by expense account name. Variants account_name_startswith and account_name_contains . Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "amount", + "tool_parameter_name": "amount_filter", + "description": "Search expenses by amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_than", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_than" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "search_by_customer_name", + "description": "Search expenses by customer name. Variants: customer_name_startswith and customer_name_contains . Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer name. Variants: customer_name_startswith and customer_name_contains . Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "search_by_customer_id", + "description": "Search expenses by customer id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "paid_through_account_id", + "tool_parameter_name": "paid_through_account_id", + "description": "Search expenses by paid through account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "expense_status_filter", + "description": "Filter expenses by expense status. Allowed Values Status.All, Status.Active, Status.Expired and Status.Stopped", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter expenses by expense status. Allowed Values Status.All, Status.Active, Status.Expired and Status.Stopped" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_expenses_by_text", + "description": "Search expenses by account name or description or customer name or vendor name. Max-length [100] .", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by account name or description or customer name or vendor name. Max-length [100] ." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_expenses_by_column", + "description": "Sort expenses.Allowed Values next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name and created_time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort expenses.Allowed Values next_expense_date, account_name, total, last_created_date, recurrence_name, customer_name and created_time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListRecurringInvoices.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListRecurringInvoices.json new file mode 100644 index 00000000..cbea71e1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListRecurringInvoices.json @@ -0,0 +1,682 @@ +{ + "name": "ListRecurringInvoices", + "fully_qualified_name": "ZohoBooksApi.ListRecurringInvoices@0.1.0", + "description": "Retrieve details of all recurring invoices.\n\nUse this tool to get detailed information on all recurring invoices. Ideal for managing invoicing schedules and monitoring recurring payments.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization for which you want to list the recurring invoices. Required for accessing specific organization's data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurrence_unique_name", + "required": false, + "description": "Unique name for the recurring profile, provided by the user. Max-length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name for the recurring profile given by the user. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurrence_name" + }, + { + "name": "search_by_item_name", + "required": false, + "description": "Search recurring invoices by item name, using 'item_name_startswith' or 'profileitemname_contains' variants.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring invoices by item name. Variants: item_name_startswith and profileitemname_contains." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_name" + }, + { + "name": "item_description_filter", + "required": false, + "description": "Search for recurring invoices by item description using 'startswith' or 'contains' criteria.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring invoices by item description. Variants: item_description_startswith and item_description_contains." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_description" + }, + { + "name": "customer_name", + "required": false, + "description": "Name of the customer for whom the recurring invoice is raised. Use this to filter invoices by customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the customer to whom the recurring invoice is raised." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "line_item_id", + "required": false, + "description": "Specify the line item ID for filtering recurring invoices.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The line item id" + }, + "inferrable": true, + "http_endpoint_parameter_name": "line_item_id" + }, + { + "name": "item_id", + "required": false, + "description": "Unique identifier for the item associated with the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique string generated for the item for which invoice is to be sent." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "tax_identifier", + "required": false, + "description": "ID of the tax or tax group associated with the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_id" + }, + { + "name": "invoice_note", + "required": false, + "description": "A short note for the recurring invoice, providing additional details or context.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A short note for the recurring invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "notes" + }, + { + "name": "recurring_invoice_start_date", + "required": false, + "description": "The date on which the recurring invoice starts. Format: YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice starts." + }, + "inferrable": true, + "http_endpoint_parameter_name": "start_date" + }, + { + "name": "recurring_invoice_end_date", + "required": false, + "description": "The date when the recurring invoice expires, formatted as YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice expires." + }, + "inferrable": true, + "http_endpoint_parameter_name": "end_date" + }, + { + "name": "customer_id", + "required": false, + "description": "The ID of the customer for whom the recurring invoice is raised. Use this to filter invoices specific to a customer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the recurring invoice is raised." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "recurring_invoice_status", + "required": false, + "description": "Status of the recurring invoice: 'active', 'stopped', or 'expired'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Status of the recurring invoice. This can be active, stopped or expired." + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "filter_recurring_invoice_status", + "required": false, + "description": "Filter recurring invoices by status or payment expected date. Allowed values: Status.All, Status.Active, Status.Stopped, Status.Expired.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter Recurring invoices by any status or payment expected date.Allowed Values: Status.All, Status.Active, Status.Stopped, Status.Expired" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_text", + "required": false, + "description": "Search invoices by invoice number, purchase order, or customer name. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by invoice number or purchase order or customer name. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Specify the column to sort the recurring invoices by. Leave empty for no sorting.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number", + "required": false, + "description": "The page number to fetch, with a default value of 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to retrieve per page, with a default of 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_recurring_invoices'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurrence_name", + "tool_parameter_name": "recurrence_unique_name", + "description": "Unique name for the recurring profile given by the user. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name for the recurring profile given by the user. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_name", + "tool_parameter_name": "search_by_item_name", + "description": "Search recurring invoices by item name. Variants: item_name_startswith and profileitemname_contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring invoices by item name. Variants: item_name_startswith and profileitemname_contains." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_description", + "tool_parameter_name": "item_description_filter", + "description": "Search recurring invoices by item description. Variants: item_description_startswith and item_description_contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring invoices by item description. Variants: item_description_startswith and item_description_contains." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "customer_name", + "description": "Name of the customer to whom the recurring invoice is raised.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the customer to whom the recurring invoice is raised." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "line_item_id", + "tool_parameter_name": "line_item_id", + "description": "The line item id", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The line item id" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "item_id", + "description": "Unique string generated for the item for which invoice is to be sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique string generated for the item for which invoice is to be sent." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_id", + "tool_parameter_name": "tax_identifier", + "description": "ID of the tax or tax group associated to the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "notes", + "tool_parameter_name": "invoice_note", + "description": "A short note for the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A short note for the recurring invoice." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "start_date", + "tool_parameter_name": "recurring_invoice_start_date", + "description": "The date on which the recurring invoice starts.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice starts." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "end_date", + "tool_parameter_name": "recurring_invoice_end_date", + "description": "The date on which the recurring invoice expires.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice expires." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "customer_id", + "description": "Customer ID of the customer for whom the recurring invoice is raised.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the recurring invoice is raised." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "recurring_invoice_status", + "description": "Status of the recurring invoice. This can be active, stopped or expired.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Status of the recurring invoice. This can be active, stopped or expired." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_recurring_invoice_status", + "description": "Filter Recurring invoices by any status or payment expected date.Allowed Values: Status.All, Status.Active, Status.Stopped, Status.Expired", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter Recurring invoices by any status or payment expected date.Allowed Values: Status.All, Status.Active, Status.Stopped, Status.Expired" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_text", + "description": "Search invoices by invoice number or purchase order or customer name. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search invoices by invoice number or purchase order or customer name. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "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": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListRetainerInvoices.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListRetainerInvoices.json new file mode 100644 index 00000000..a7a5bd45 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListRetainerInvoices.json @@ -0,0 +1,319 @@ +{ + "name": "ListRetainerInvoices", + "fully_qualified_name": "ZohoBooksApi.ListRetainerInvoices@0.1.0", + "description": "List all retainer invoices with pagination.\n\nRetrieve a complete list of retainer invoices. Use this tool to access invoices with pagination support.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Specifies the column to sort retainer invoices by. Allowed values: 'customer_name', 'retainer_invoice_number', 'date', 'due_date', 'total', 'balance', 'created_time'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort retainer invoices.Allowed Values: customer_name, retainer invoice_number, date, due_date, total, balance and created_time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "filter_invoices_by_status_or_date", + "required": false, + "description": "Filter invoices by status or payment expected date. Valid values: Status.All, Status.Sent, Status.Draft, Status.OverDue, Status.Paid, Status.Void, Status.Unpaid, Status.PartiallyPaid, Status.Viewed, Date.PaymentExpectedDate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter invoices by any status or payment expected date.Allowed Values: Status.All, Status.Sent, Status.Draft, Status.OverDue, Status.Paid, Status.Void, Status.Unpaid, Status.PartiallyPaid, Status.Viewed and Date.PaymentExpectedDate" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "sorting_order", + "required": false, + "description": "The order for sorting retainer invoices. Typically 'asc' for ascending or 'desc' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The order for sorting" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_order" + }, + { + "name": "page_number", + "required": false, + "description": "Specifies the page number for pagination when listing retainer invoices.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of pages" + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + }, + { + "name": "print_pdf", + "required": false, + "description": "Set to true to print the exported PDF of retainer invoices.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_retainer_invoices'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "print_pdf", + "description": "Print the exported pdf.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "description": "Sort retainer invoices.Allowed Values: customer_name, retainer invoice_number, date, due_date, total, balance and created_time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort retainer invoices.Allowed Values: customer_name, retainer invoice_number, date, due_date, total, balance and created_time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_invoices_by_status_or_date", + "description": "Filter invoices by any status or payment expected date.Allowed Values: Status.All, Status.Sent, Status.Draft, Status.OverDue, Status.Paid, Status.Void, Status.Unpaid, Status.PartiallyPaid, Status.Viewed and Date.PaymentExpectedDate", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter invoices by any status or payment expected date.Allowed Values: Status.All, Status.Sent, Status.Draft, Status.OverDue, Status.Paid, Status.Void, Status.Unpaid, Status.PartiallyPaid, Status.Viewed and Date.PaymentExpectedDate" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_order", + "tool_parameter_name": "sorting_order", + "description": "The order for sorting", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The order for sorting" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Number of pages", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of pages" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListSalesOrders.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListSalesOrders.json new file mode 100644 index 00000000..15a54ed7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListSalesOrders.json @@ -0,0 +1,880 @@ +{ + "name": "ListSalesOrders", + "fully_qualified_name": "ZohoBooksApi.ListSalesOrders@0.1.0", + "description": "Retrieve a list of all sales orders.\n\nUse this tool to get a complete list of sales orders. It helps in managing and reviewing sales transactions efficiently.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which sales orders are to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sort_column", + "required": false, + "description": "Column field to sort sales order results. Options: customer_name, salesorder_number, shipment_date, last_modified_time, reference_number, total, date, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the column field for sorting sales order results. Available options include customer_name, salesorder_number, shipment_date, last_modified_time, reference_number, total, date, and created_time." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "cross_field_search_text", + "required": false, + "description": "A general search term for matching text across fields like sales order number, reference number, and customer name for quick identification.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "General search parameter for cross-field text matching across sales order number, reference number, and customer name fields. Enables unified search functionality for quick order identification and customer order lookup operations." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "filter_sales_order_by_status", + "required": false, + "description": "Filter sales orders by status. Options: All, Open, Draft, OverDue, PartiallyInvoiced, Invoiced, Void, Closed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales order by status. Allowed Values: Status.All, Status.Open, Status.Draft, Status.OverDue, Status.PartiallyInvoiced, Status.Invoiced, Status.Void and Status.Closed" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "filter_by_sales_order_number", + "required": false, + "description": "Filter sales orders by sales order number with operators: startswith, not_in, in, or contains. Max length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by sales order number using various matching operators. Available variants include salesorder_number_startswith, salesorder_number_not_in, salesorder_number_in, and salesorder_number_contains. Maximum search length: 100 characters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_number" + }, + { + "name": "filter_by_item_name", + "required": false, + "description": "Filter sales orders by line item name. Use matching operators like startswith, not_in, in, and contains. Max length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by line item name using various matching operators. Available variants include item_name_startswith, item_name_not_in, item_name_in, and item_name_contains. Maximum search length: 100 characters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_name" + }, + { + "name": "filter_by_item_id", + "required": false, + "description": "Filter sales orders by a specific line item identifier to retrieve orders containing a particular product or service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by specific line item identifier. Retrieves all sales orders containing a particular product or service item based on its unique identifier for inventory tracking and item-based reporting purposes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "filter_by_item_description", + "required": false, + "description": "Filter sales orders by line item description. Supports variants like startswith, not_in, in, and contains. Max length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by line item description text using various matching operators. Available variants include item_description_startswith, item_description_not_in, item_description_in, and item_description_contains. Maximum search length: 100 characters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_description" + }, + { + "name": "filter_by_reference_number", + "required": false, + "description": "Filter sales orders by external reference number using operators like `startswith`, `not_in`, `in`, and `contains`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by external reference number using various matching operators. Available variants include reference_number_startswith, reference_number_not_in, reference_number_in, and reference_number_contains." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "customer_name_filter", + "required": false, + "description": "Filter sales orders by customer name with operators like startswith, not_in, in, and contains. Max length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by customer name using various matching operators. Available variants include customer_name_startswith, customer_name_not_in, customer_name_in, and customer_name_contains. Maximum search length: 100 characters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "filter_by_total", + "required": false, + "description": "Specify range operators to filter sales orders by total. Use total_start, total_end, total_less_than, total_greater_than, etc.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by total amount using various range operators. Available variants include total_start, total_end, total_less_than, total_less_equals, total_greater_than, and total_greater_equals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "creation_date_filter", + "required": false, + "description": "Filter sales orders by creation date using operators like `date_start`, `date_end`, `date_before`, `date_after`. Format: `yyyy-mm-dd`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by creation date using various date range operators. Available variants include date_start, date_end, date_before, and date_after. Default date format: yyyy-mm-dd." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "shipment_date_filter", + "required": false, + "description": "Specify the shipment date filter for sales orders. Use variants such as 'shipment_date_start', 'shipment_date_end', 'shipment_date_before', and 'shipment_date_after' in 'yyyy-mm-dd' format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search sales order by sales order shipment date. Variants: shipment_date_start, shipment_date_end, shipment_date_before and shipment_date_after. Default date format : yyyy-mm-dd" + }, + "inferrable": true, + "http_endpoint_parameter_name": "shipment_date" + }, + { + "name": "sales_order_status", + "required": false, + "description": "Filter sales orders by their status. Allowed values: draft, open, invoiced, partially_invoiced, void, and overdue.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search sales order by sales order status. Allowed Values: draft, open, invoiced, partially_invoiced, void and overdue." + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "filter_by_customer_id", + "required": false, + "description": "Filter sales orders by specific customer ID. Retrieves orders associated with a customer for CRM and reporting.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by specific customer identifier. Retrieves all sales orders associated with a particular customer account for customer relationship management, order history tracking, and customer-specific reporting and analysis purposes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "sales_representative_id", + "required": false, + "description": "Filter sales orders by specific sales representative ID for tracking and reporting purposes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by specific sales representative identifier. Retrieves all sales orders assigned to a particular salesperson for performance tracking, commission calculations, sales territory management, and individual sales reporting purposes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesperson_id" + }, + { + "name": "sales_order_ids", + "required": false, + "description": "Comma-separated list of sales order IDs to filter results. Maximum length is 200 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID's of the salesorder [Comma seperated values] . Maximum Length : 200" + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_ids" + }, + { + "name": "last_modified_time", + "required": false, + "description": "Specify the last modified time of the sales order to filter results. Use the format 'yyyy-mm-dd'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last Modified time of the Sales Order" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "response_format", + "required": false, + "description": "Specifies the format for sales order details. Must be one of: json, csv, xml, xls, xlsx, pdf, jhtml, or html. Default is json.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular sales order in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, csv , xml, xls, xlsx, pdf, jhtml and html." + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + }, + { + "name": "custom_view_id", + "required": false, + "description": "ID of the custom view to filter sales orders based on predefined criteria.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customview" + }, + "inferrable": true, + "http_endpoint_parameter_name": "customview_id" + }, + { + "name": "deal_crm_potential_id", + "required": false, + "description": "Potential ID of a Deal in CRM. Used to filter sales orders associated with a specific deal.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Potential ID of a Deal in CRM." + }, + "inferrable": true, + "http_endpoint_parameter_name": "zcrm_potential_id" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number for retrieving paginated sales order results. Default is 1 for the first page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the page number for paginated results retrieval. Controls which subset of sales order records to return, enabling efficient data handling for large result sets. Default value is 1 for the first page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "max_sales_orders_per_page", + "required": false, + "description": "Specify the maximum number of sales order records to return per page. Default is 200 for optimal performance and memory usage.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the maximum number of sales order records to return per page. Controls result set size for optimal performance, memory usage, and user experience. Default value is 200 records per page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + }, + { + "name": "enable_printing", + "required": false, + "description": "Enable printing of the exported PDF. Use when 'accept' is set to 'pdf' and 'salesorder_ids' includes values.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf. It will be used when accept = pdf and atleast one value in salesorder_ids " + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_sales_orders'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_column", + "description": "Specify the column field for sorting sales order results. Available options include customer_name, salesorder_number, shipment_date, last_modified_time, reference_number, total, date, and created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the column field for sorting sales order results. Available options include customer_name, salesorder_number, shipment_date, last_modified_time, reference_number, total, date, and created_time." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "cross_field_search_text", + "description": "General search parameter for cross-field text matching across sales order number, reference number, and customer name fields. Enables unified search functionality for quick order identification and customer order lookup operations.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "General search parameter for cross-field text matching across sales order number, reference number, and customer name fields. Enables unified search functionality for quick order identification and customer order lookup operations." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_sales_order_by_status", + "description": "Filter sales order by status. Allowed Values: Status.All, Status.Open, Status.Draft, Status.OverDue, Status.PartiallyInvoiced, Status.Invoiced, Status.Void and Status.Closed", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales order by status. Allowed Values: Status.All, Status.Open, Status.Draft, Status.OverDue, Status.PartiallyInvoiced, Status.Invoiced, Status.Void and Status.Closed" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_number", + "tool_parameter_name": "filter_by_sales_order_number", + "description": "Filter sales orders by sales order number using various matching operators. Available variants include salesorder_number_startswith, salesorder_number_not_in, salesorder_number_in, and salesorder_number_contains. Maximum search length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by sales order number using various matching operators. Available variants include salesorder_number_startswith, salesorder_number_not_in, salesorder_number_in, and salesorder_number_contains. Maximum search length: 100 characters." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_name", + "tool_parameter_name": "filter_by_item_name", + "description": "Filter sales orders by line item name using various matching operators. Available variants include item_name_startswith, item_name_not_in, item_name_in, and item_name_contains. Maximum search length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by line item name using various matching operators. Available variants include item_name_startswith, item_name_not_in, item_name_in, and item_name_contains. Maximum search length: 100 characters." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "filter_by_item_id", + "description": "Filter sales orders by specific line item identifier. Retrieves all sales orders containing a particular product or service item based on its unique identifier for inventory tracking and item-based reporting purposes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by specific line item identifier. Retrieves all sales orders containing a particular product or service item based on its unique identifier for inventory tracking and item-based reporting purposes." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_description", + "tool_parameter_name": "filter_by_item_description", + "description": "Filter sales orders by line item description text using various matching operators. Available variants include item_description_startswith, item_description_not_in, item_description_in, and item_description_contains. Maximum search length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by line item description text using various matching operators. Available variants include item_description_startswith, item_description_not_in, item_description_in, and item_description_contains. Maximum search length: 100 characters." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "filter_by_reference_number", + "description": "Filter sales orders by external reference number using various matching operators. Available variants include reference_number_startswith, reference_number_not_in, reference_number_in, and reference_number_contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by external reference number using various matching operators. Available variants include reference_number_startswith, reference_number_not_in, reference_number_in, and reference_number_contains." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "customer_name_filter", + "description": "Filter sales orders by customer name using various matching operators. Available variants include customer_name_startswith, customer_name_not_in, customer_name_in, and customer_name_contains. Maximum search length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by customer name using various matching operators. Available variants include customer_name_startswith, customer_name_not_in, customer_name_in, and customer_name_contains. Maximum search length: 100 characters." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "filter_by_total", + "description": "Filter sales orders by total amount using various range operators. Available variants include total_start, total_end, total_less_than, total_less_equals, total_greater_than, and total_greater_equals.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by total amount using various range operators. Available variants include total_start, total_end, total_less_than, total_less_equals, total_greater_than, and total_greater_equals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "creation_date_filter", + "description": "Filter sales orders by creation date using various date range operators. Available variants include date_start, date_end, date_before, and date_after. Default date format: yyyy-mm-dd.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by creation date using various date range operators. Available variants include date_start, date_end, date_before, and date_after. Default date format: yyyy-mm-dd." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "shipment_date", + "tool_parameter_name": "shipment_date_filter", + "description": "Search sales order by sales order shipment date. Variants: shipment_date_start, shipment_date_end, shipment_date_before and shipment_date_after. Default date format : yyyy-mm-dd", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search sales order by sales order shipment date. Variants: shipment_date_start, shipment_date_end, shipment_date_before and shipment_date_after. Default date format : yyyy-mm-dd" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "sales_order_status", + "description": "Search sales order by sales order status. Allowed Values: draft, open, invoiced, partially_invoiced, void and overdue.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search sales order by sales order status. Allowed Values: draft, open, invoiced, partially_invoiced, void and overdue." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "filter_by_customer_id", + "description": "Filter sales orders by specific customer identifier. Retrieves all sales orders associated with a particular customer account for customer relationship management, order history tracking, and customer-specific reporting and analysis purposes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by specific customer identifier. Retrieves all sales orders associated with a particular customer account for customer relationship management, order history tracking, and customer-specific reporting and analysis purposes." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesperson_id", + "tool_parameter_name": "sales_representative_id", + "description": "Filter sales orders by specific sales representative identifier. Retrieves all sales orders assigned to a particular salesperson for performance tracking, commission calculations, sales territory management, and individual sales reporting purposes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales orders by specific sales representative identifier. Retrieves all sales orders assigned to a particular salesperson for performance tracking, commission calculations, sales territory management, and individual sales reporting purposes." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_ids", + "tool_parameter_name": "sales_order_ids", + "description": "ID's of the salesorder [Comma seperated values] . Maximum Length : 200", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID's of the salesorder [Comma seperated values] . Maximum Length : 200" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "last_modified_time", + "description": "Last Modified time of the Sales Order", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last Modified time of the Sales Order" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "response_format", + "description": "Get the details of a particular sales order in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, csv , xml, xls, xlsx, pdf, jhtml and html.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular sales order in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, csv , xml, xls, xlsx, pdf, jhtml and html." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "enable_printing", + "description": "Print the exported pdf. It will be used when accept = pdf and atleast one value in salesorder_ids ", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf. It will be used when accept = pdf and atleast one value in salesorder_ids " + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customview_id", + "tool_parameter_name": "custom_view_id", + "description": "ID of the customview", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customview" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "zcrm_potential_id", + "tool_parameter_name": "deal_crm_potential_id", + "description": "Potential ID of a Deal in CRM.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Potential ID of a Deal in CRM." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Specify the page number for paginated results retrieval. Controls which subset of sales order records to return, enabling efficient data handling for large result sets. Default value is 1 for the first page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the page number for paginated results retrieval. Controls which subset of sales order records to return, enabling efficient data handling for large result sets. Default value is 1 for the first page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "max_sales_orders_per_page", + "description": "Specify the maximum number of sales order records to return per page. Controls result set size for optimal performance, memory usage, and user experience. Default value is 200 records per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the maximum number of sales order records to return per page. Controls result set size for optimal performance, memory usage, and user experience. Default value is 200 records per page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListSalesReceipts.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListSalesReceipts.json new file mode 100644 index 00000000..3e74f915 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListSalesReceipts.json @@ -0,0 +1,418 @@ +{ + "name": "ListSalesReceipts", + "fully_qualified_name": "ZohoBooksApi.ListSalesReceipts@0.1.0", + "description": "Retrieve a list of all sales receipts.\n\nUse this tool to obtain a comprehensive list of all sales receipts. It should be called when there's a need to review or analyze sales transaction records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to list sales receipts.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "search_receipt_by_number", + "required": false, + "description": "Search for receipts using their unique number. Supports 'startswith' and 'contains' filters. Max length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search receipt by receipt number. Filters receipts based on their unique identifier. Supports receipt_number_startswith and receipt_number_contains variants. Maximum length is 100 characters. Useful for finding specific receipts or receipts with similar numbering patterns." + }, + "inferrable": true, + "http_endpoint_parameter_name": "receipt_number" + }, + { + "name": "search_by_item_name", + "required": false, + "description": "Search sales receipts by item name using 'startswith' or 'contains' variants. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search receipt by item name. Supports item_name_startswith and item_name_contains variants. Maximum length is 100 characters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_name" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Specify the column to sort sales receipts by. Options: customer_name, receipt_number, date, total, created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the column field for sorting sales receipt results. Available options include customer_name, receipt_number, date, total, and created_time." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "filter_sales_receipts_by_status", + "required": false, + "description": "Filter sales receipts based on their status. Options include date ranges like 'ThisWeek', and statuses like 'Status.Draft'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales receipts by status. Allowed Values: ThisWeek, ThisMonth, ThisQuarter, ThisYear,PreviousDay, PreviousWeek, PreviousMonth, PreviousQuarter, PreviousYear, Status.All, Status.Draft, Status.Sent" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "customer_identifier", + "required": false, + "description": "Filter sales receipts by specific customer identifier. Provide the unique ID of the customer to retrieve their sales receipts.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales receipts by specific customer identifier." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "date_filter", + "required": false, + "description": "Filter sales receipts by date using variants like date_start, date_end, date_before, and date_after. Use yyyy-mm-dd format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales receipts by date. Available variants include date_start, date_end, date_before, and date_after. Default date format: yyyy-mm-dd." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "total_filter_options", + "required": false, + "description": "Filter sales receipts using range operators like total_start, total_end, total_less_than, and total_greater_than. Expects a number specifying the total amount.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales receipts by total amount using various range operators. Available variants include total_start, total_end, total_less_than, total_greater_than." + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number for retrieving paginated sales receipt results. Defaults to 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the page number for paginated results retrieval. Default value is 1 for the first page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "max_records_per_page", + "required": false, + "description": "Specify the maximum number of sales receipt records to return per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the maximum number of sales receipt records to return per page. Default value is 200 records per page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_sales_receipts'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesreceipts", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "receipt_number", + "tool_parameter_name": "search_receipt_by_number", + "description": "Search receipt by receipt number. Filters receipts based on their unique identifier. Supports receipt_number_startswith and receipt_number_contains variants. Maximum length is 100 characters. Useful for finding specific receipts or receipts with similar numbering patterns.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search receipt by receipt number. Filters receipts based on their unique identifier. Supports receipt_number_startswith and receipt_number_contains variants. Maximum length is 100 characters. Useful for finding specific receipts or receipts with similar numbering patterns." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_name", + "tool_parameter_name": "search_by_item_name", + "description": "Search receipt by item name. Supports item_name_startswith and item_name_contains variants. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search receipt by item name. Supports item_name_startswith and item_name_contains variants. Maximum length is 100 characters." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "description": "Specify the column field for sorting sales receipt results. Available options include customer_name, receipt_number, date, total, and created_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the column field for sorting sales receipt results. Available options include customer_name, receipt_number, date, total, and created_time." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_sales_receipts_by_status", + "description": "Filter sales receipts by status. Allowed Values: ThisWeek, ThisMonth, ThisQuarter, ThisYear,PreviousDay, PreviousWeek, PreviousMonth, PreviousQuarter, PreviousYear, Status.All, Status.Draft, Status.Sent", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales receipts by status. Allowed Values: ThisWeek, ThisMonth, ThisQuarter, ThisYear,PreviousDay, PreviousWeek, PreviousMonth, PreviousQuarter, PreviousYear, Status.All, Status.Draft, Status.Sent" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "customer_identifier", + "description": "Filter sales receipts by specific customer identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales receipts by specific customer identifier." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "date_filter", + "description": "Filter sales receipts by date. Available variants include date_start, date_end, date_before, and date_after. Default date format: yyyy-mm-dd.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales receipts by date. Available variants include date_start, date_end, date_before, and date_after. Default date format: yyyy-mm-dd." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "total_filter_options", + "description": "Filter sales receipts by total amount using various range operators. Available variants include total_start, total_end, total_less_than, total_greater_than.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter sales receipts by total amount using various range operators. Available variants include total_start, total_end, total_less_than, total_greater_than." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Specify the page number for paginated results retrieval. Default value is 1 for the first page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the page number for paginated results retrieval. Default value is 1 for the first page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "max_records_per_page", + "description": "Specify the maximum number of sales receipt records to return per page. Default value is 200 records per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the maximum number of sales receipt records to return per page. Default value is 200 records per page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListTaxes.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListTaxes.json new file mode 100644 index 00000000..6c1b5a0a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListTaxes.json @@ -0,0 +1,187 @@ +{ + "name": "ListTaxes", + "fully_qualified_name": "ZohoBooksApi.ListTaxes@0.1.0", + "description": "Retrieve a list of simple and compound taxes.\n\nUse this tool to get a list of simple and compound taxes available in the system, with options for pagination.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique ID of the organization to list taxes for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "page_number", + "required": false, + "description": "Page number of the tax list to retrieve. Defaults to 1 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "The number of tax records to retrieve per page. Defaults to 200 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_taxes'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxes", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListTimeEntries.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListTimeEntries.json new file mode 100644 index 00000000..338b0f9b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListTimeEntries.json @@ -0,0 +1,385 @@ +{ + "name": "ListTimeEntries", + "fully_qualified_name": "ZohoBooksApi.ListTimeEntries@0.1.0", + "description": "Retrieve all time entries with pagination.\n\nCall this tool to get a list of all time entries for projects, supporting pagination if needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization. Required to retrieve time entries specific to this organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "start_date_for_time_entries", + "required": false, + "description": "Date from which the time entries should start being fetched. Expected format is YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date from which the time entries logged to be fetched" + }, + "inferrable": true, + "http_endpoint_parameter_name": "from_date" + }, + { + "name": "end_date_for_time_entries", + "required": false, + "description": "The end date for fetching logged time entries in YYYY-MM-DD format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date up to which the time entries logged to be fetched" + }, + "inferrable": true, + "http_endpoint_parameter_name": "to_date" + }, + { + "name": "filter_time_entries_by", + "required": false, + "description": "Filter time entries by date or status. Use values like Date.Today, Date.ThisMonth, Status.Unbilled, etc.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter time entries by date and status. Allowed Values: Date.All, Date.Today, Date.ThisWeek, Date.ThisMonth, Date.ThisQuarter, Date.ThisYear, Date.PreviousDay, Date.PreviousWeek, Date.PreviousMonth, Date.PreviousQuarter, Date.PreviousYear, Date.CustomDate, Status.Unbilled and Status.Invoiced" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "project_id", + "required": false, + "description": "Search for time entries by specifying the project ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search time entries by project_id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "search_time_entries_by_user_id", + "required": false, + "description": "Search and filter time entries based on a specific user's ID. Provide the ID as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search time entries by user_id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + }, + { + "name": "sort_time_entries_by", + "required": false, + "description": "Sort time entries by project name, task name, user name, log date, timer start time, or customer name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort time entries. Allowed Values: project_name, task_name, user_name, log_date, timer_started_at and customer_name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "Page number to retrieve time entries from, starting at 1 by default.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Defaults to 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_time_entries'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/timeentries", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "from_date", + "tool_parameter_name": "start_date_for_time_entries", + "description": "Date from which the time entries logged to be fetched", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date from which the time entries logged to be fetched" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "to_date", + "tool_parameter_name": "end_date_for_time_entries", + "description": "Date up to which the time entries logged to be fetched", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date up to which the time entries logged to be fetched" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_time_entries_by", + "description": "Filter time entries by date and status. Allowed Values: Date.All, Date.Today, Date.ThisWeek, Date.ThisMonth, Date.ThisQuarter, Date.ThisYear, Date.PreviousDay, Date.PreviousWeek, Date.PreviousMonth, Date.PreviousQuarter, Date.PreviousYear, Date.CustomDate, Status.Unbilled and Status.Invoiced", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter time entries by date and status. Allowed Values: Date.All, Date.Today, Date.ThisWeek, Date.ThisMonth, Date.ThisQuarter, Date.ThisYear, Date.PreviousDay, Date.PreviousWeek, Date.PreviousMonth, Date.PreviousQuarter, Date.PreviousYear, Date.CustomDate, Status.Unbilled and Status.Invoiced" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_id", + "description": "Search time entries by project_id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search time entries by project_id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "search_time_entries_by_user_id", + "description": "Search time entries by user_id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search time entries by user_id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_time_entries_by", + "description": "Sort time entries. Allowed Values: project_name, task_name, user_name, log_date, timer_started_at and customer_name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort time entries. Allowed Values: project_name, task_name, user_name, log_date, timer_started_at and customer_name" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorCreditRefunds.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorCreditRefunds.json new file mode 100644 index 00000000..1a78c3a0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorCreditRefunds.json @@ -0,0 +1,220 @@ +{ + "name": "ListVendorCreditRefunds", + "fully_qualified_name": "ZohoBooksApi.ListVendorCreditRefunds@0.1.0", + "description": "Retrieve all refunds for a specified vendor credit.\n\nUse this tool to get a list of all refunds associated with a particular vendor credit by providing the vendor credit ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "Unique string ID of the organization for which refunds are to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_id", + "required": true, + "description": "The unique identifier for a specific vendor credit whose refunds are to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "page_number", + "required": false, + "description": "Page number for pagination, specifying which set of results to retrieve. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify the number of refunds to return per page for pagination. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many vendor credits are returned in each page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_vendor_credit_refunds'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records per page for pagination. Controls how many vendor credits are returned in each page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many vendor credits are returned in each page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_id", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorCredits.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorCredits.json new file mode 100644 index 00000000..0d110c75 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorCredits.json @@ -0,0 +1,781 @@ +{ + "name": "ListVendorCredits", + "fully_qualified_name": "ZohoBooksApi.ListVendorCredits@0.1.0", + "description": "Retrieve and filter vendor credits from Zoho Books.\n\nRetrieve a paginated list of vendor credits using various filtering, sorting, and search capabilities, such as by date, status, amount, vendor details, items, taxes, and custom fields.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_number_filter", + "required": false, + "description": "Filter vendor credits by specific vendor credit number. Supports partial matching with options like 'startswith' and 'contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by specific vendor credit number. Supports variants vendor_credit_number_startswith and vendor_credit_number_contains for partial matching." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_number" + }, + { + "name": "filter_by_creation_date", + "required": false, + "description": "Filter vendor credits by creation date using yyyy-mm-dd format. Supports date_start, date_end, date_before, and date_after for range filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by creation date. Use yyyy-mm-dd format. Supports variants: date_start, date_end, date_before and date_after for range-based filtering." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "vendor_credit_status", + "required": false, + "description": "Filter vendor credits by their current status. Allowed values: 'open', 'closed', 'void', or 'draft'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by their current status. Allowed values: open, closed, void, or draft." + }, + "inferrable": true, + "http_endpoint_parameter_name": "status" + }, + { + "name": "total_amount_filter", + "required": false, + "description": "Filter vendor credits by total amount. Use variants: total_start, total_end, total_less_than, total_less_equals, total_greater_than, total_greater_equals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by their total amount. Supports variants: total_start, total_end, total_less_than, total_less_equals, total_greater_than and total_greater_equals for comparison-based filtering." + }, + "inferrable": true, + "http_endpoint_parameter_name": "total" + }, + { + "name": "reference_number_filter", + "required": false, + "description": "Filter vendor credits by their reference number, supporting 'startswith' and 'contains' for partial matches.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by their reference number. Supports variants: reference_number_startswith and reference_number_contains for partial matching." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "filter_by_vendor_name", + "required": false, + "description": "Filter vendor credits by vendor name, supporting partial matches with 'startswith' and 'contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by vendor name. Supports variants: customer_name_startswith and customer_name_contains for partial matching." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_name" + }, + { + "name": "filter_by_item_name", + "required": false, + "description": "Filter vendor credits by item name. Use 'startswith:' or 'contains:' as prefixes for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by item name. Supports variants: item_name_startswith and item_name_contains for partial matching." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_name" + }, + { + "name": "item_description_filter", + "required": false, + "description": "Filter vendor credits by item description. Supports partial matching with 'startswith' and 'contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by item description. Supports variants: item_description_startswith and item_description_contains for partial matching." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_description" + }, + { + "name": "filter_by_notes_content", + "required": false, + "description": "Filter vendor credits by notes content. Use partial matching with variants: notes_startswith or notes_contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by notes content. Supports variants: notes_startswith and notes_contains for partial matching." + }, + "inferrable": true, + "http_endpoint_parameter_name": "notes" + }, + { + "name": "filter_by_custom_field", + "required": false, + "description": "Filter vendor credits by custom field values. Use 'custom_field_startswith' or 'custom_field_contains' for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by custom field values. Supports variants: custom_field_startswith and custom_field_contains for partial matching." + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_field" + }, + { + "name": "filter_by_last_modified_time", + "required": false, + "description": "Filter vendor credits by last modified time using ISO 8601 format (yyyy-mm-ddThh:mm:ss-hh:mm).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by last modified time. Use ISO 8601 format (yyyy-mm-ddThh:mm:ss-hh:mm) to search for vendor credits modified at specific times." + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "filter_by_customer_id", + "required": false, + "description": "Filter vendor credits by a specific customer ID to find credits associated with that customer. Retrieve customer IDs from the contacts API.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by customer ID. Use this parameter to search for vendor credits associated with a specific customer. Retrieve customer IDs from the contacts API." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_id" + }, + { + "name": "filter_by_line_item_id", + "required": false, + "description": "Filter vendor credits by a specific line item ID to find credits containing the item.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by line item ID. Use this parameter to search for vendor credits containing a specific line item within the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "line_item_id" + }, + { + "name": "filter_by_item_id", + "required": false, + "description": "Filter vendor credits by a specific item ID. Use this to find vendor credits containing the item. Retrieve item IDs from the items API.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by item ID. Use this parameter to search for vendor credits containing a specific item. Retrieve item IDs from the items API." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "filter_by_tax_id", + "required": false, + "description": "Filter vendor credits by specific tax ID to find credits with that tax applied. Tax IDs are retrieved from the taxes API.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by tax ID. Use this parameter to search for vendor credits with a specific tax applied. Retrieve tax IDs from the taxes API." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_id" + }, + { + "name": "filter_by_status", + "required": false, + "description": "Filter vendor credits by status using predefined values: Status.All, Status.Open, Status.Draft, Status.Closed, Status.Void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by status using predefined status values. Allowed values: Status.All, Status.Open, Status.Draft, Status.Closed, and Status.Void." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_text", + "required": false, + "description": "Enter text to search vendor credits by credit number, vendor name, and reference number.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search vendor credits using text search across multiple fields. Searches vendor credit number, vendor name, and reference number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Specify which column to sort vendor credits by. Options: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time, reference_number.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort vendor credits by specified column. Allowed values: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time, and reference_number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "pagination_page_number", + "required": false, + "description": "Specify the page number to retrieve results from for pagination. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "pagination_records_per_page", + "required": false, + "description": "Specify the number of vendor credit records to return per page. The default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many vendor credits are returned in each page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_vendor_credits'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_number", + "tool_parameter_name": "vendor_credit_number_filter", + "description": "Filter vendor credits by specific vendor credit number. Supports variants vendor_credit_number_startswith and vendor_credit_number_contains for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by specific vendor credit number. Supports variants vendor_credit_number_startswith and vendor_credit_number_contains for partial matching." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "filter_by_creation_date", + "description": "Filter vendor credits by creation date. Use yyyy-mm-dd format. Supports variants: date_start, date_end, date_before and date_after for range-based filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by creation date. Use yyyy-mm-dd format. Supports variants: date_start, date_end, date_before and date_after for range-based filtering." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status", + "tool_parameter_name": "vendor_credit_status", + "description": "Filter vendor credits by their current status. Allowed values: open, closed, void, or draft.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by their current status. Allowed values: open, closed, void, or draft." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "total", + "tool_parameter_name": "total_amount_filter", + "description": "Filter vendor credits by their total amount. Supports variants: total_start, total_end, total_less_than, total_less_equals, total_greater_than and total_greater_equals for comparison-based filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by their total amount. Supports variants: total_start, total_end, total_less_than, total_less_equals, total_greater_than and total_greater_equals for comparison-based filtering." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "reference_number_filter", + "description": "Filter vendor credits by their reference number. Supports variants: reference_number_startswith and reference_number_contains for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by their reference number. Supports variants: reference_number_startswith and reference_number_contains for partial matching." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_name", + "tool_parameter_name": "filter_by_vendor_name", + "description": "Filter vendor credits by vendor name. Supports variants: customer_name_startswith and customer_name_contains for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by vendor name. Supports variants: customer_name_startswith and customer_name_contains for partial matching." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_name", + "tool_parameter_name": "filter_by_item_name", + "description": "Filter vendor credits by item name. Supports variants: item_name_startswith and item_name_contains for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by item name. Supports variants: item_name_startswith and item_name_contains for partial matching." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_description", + "tool_parameter_name": "item_description_filter", + "description": "Filter vendor credits by item description. Supports variants: item_description_startswith and item_description_contains for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by item description. Supports variants: item_description_startswith and item_description_contains for partial matching." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "notes", + "tool_parameter_name": "filter_by_notes_content", + "description": "Filter vendor credits by notes content. Supports variants: notes_startswith and notes_contains for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by notes content. Supports variants: notes_startswith and notes_contains for partial matching." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "custom_field", + "tool_parameter_name": "filter_by_custom_field", + "description": "Filter vendor credits by custom field values. Supports variants: custom_field_startswith and custom_field_contains for partial matching.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by custom field values. Supports variants: custom_field_startswith and custom_field_contains for partial matching." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "filter_by_last_modified_time", + "description": "Filter vendor credits by last modified time. Use ISO 8601 format (yyyy-mm-ddThh:mm:ss-hh:mm) to search for vendor credits modified at specific times.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by last modified time. Use ISO 8601 format (yyyy-mm-ddThh:mm:ss-hh:mm) to search for vendor credits modified at specific times." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_id", + "tool_parameter_name": "filter_by_customer_id", + "description": "Filter vendor credits by customer ID. Use this parameter to search for vendor credits associated with a specific customer. Retrieve customer IDs from the contacts API.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by customer ID. Use this parameter to search for vendor credits associated with a specific customer. Retrieve customer IDs from the contacts API." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "line_item_id", + "tool_parameter_name": "filter_by_line_item_id", + "description": "Filter vendor credits by line item ID. Use this parameter to search for vendor credits containing a specific line item within the vendor credit.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by line item ID. Use this parameter to search for vendor credits containing a specific line item within the vendor credit." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "filter_by_item_id", + "description": "Filter vendor credits by item ID. Use this parameter to search for vendor credits containing a specific item. Retrieve item IDs from the items API.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by item ID. Use this parameter to search for vendor credits containing a specific item. Retrieve item IDs from the items API." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_id", + "tool_parameter_name": "filter_by_tax_id", + "description": "Filter vendor credits by tax ID. Use this parameter to search for vendor credits with a specific tax applied. Retrieve tax IDs from the taxes API.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by tax ID. Use this parameter to search for vendor credits with a specific tax applied. Retrieve tax IDs from the taxes API." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_by_status", + "description": "Filter vendor credits by status using predefined status values. Allowed values: Status.All, Status.Open, Status.Draft, Status.Closed, and Status.Void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter vendor credits by status using predefined status values. Allowed values: Status.All, Status.Open, Status.Draft, Status.Closed, and Status.Void." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_text", + "description": "Search vendor credits using text search across multiple fields. Searches vendor credit number, vendor name, and reference number.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search vendor credits using text search across multiple fields. Searches vendor credit number, vendor name, and reference number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "description": "Sort vendor credits by specified column. Allowed values: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time, and reference_number.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort vendor credits by specified column. Allowed values: vendor_name, vendor_credit_number, balance, total, date, created_time, last_modified_time, and reference_number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "pagination_page_number", + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination. Specify which page of results to retrieve. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "pagination_records_per_page", + "description": "Number of records per page for pagination. Controls how many vendor credits are returned in each page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records per page for pagination. Controls how many vendor credits are returned in each page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorPaymentRefunds.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorPaymentRefunds.json new file mode 100644 index 00000000..9db3a05d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorPaymentRefunds.json @@ -0,0 +1,220 @@ +{ + "name": "ListVendorPaymentRefunds", + "fully_qualified_name": "ZohoBooksApi.ListVendorPaymentRefunds@0.1.0", + "description": "List all refunds for a vendor payment.\n\nRetrieve a list of all refunds associated with a specific vendor payment in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books to list the refunds for. This should be a unique identifier as specified by Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_identifier", + "required": true, + "description": "Unique identifier of the vendor payment to fetch refunds for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "page_number", + "required": false, + "description": "Page number to be fetched, starting from 1. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Number of records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_vendor_payment_refunds'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_identifier", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorPayments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorPayments.json new file mode 100644 index 00000000..72bbe0d0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ListVendorPayments.json @@ -0,0 +1,649 @@ +{ + "name": "ListVendorPayments", + "fully_qualified_name": "ZohoBooksApi.ListVendorPayments@0.1.0", + "description": "Fetch all payments made to vendors.\n\nUse this tool to retrieve a list of all vendor payments. It helps manage and track financial transactions with vendors.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization whose vendor payments you want to list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_name_query", + "required": false, + "description": "Search payments by vendor name using parameters like startswith or contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by vendor name. Variants: vendor_name_startswith and vendor_name_contains." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_name" + }, + { + "name": "search_by_reference_number", + "required": false, + "description": "Search payments using the reference number. Supports variants: 'startswith' and 'contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by reference number. Variants: reference_number_startswith and reference_number_contains. In refunds, reference number for the refund recorded." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reference_number" + }, + { + "name": "payment_number_search", + "required": false, + "description": "Search payments using the payment number with options for exact match, starts with, or contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search with Payment Number. Variant: payment_number_startswith, payment_number_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_number" + }, + { + "name": "payment_date_filter", + "required": false, + "description": "Specify the date for payment filtering. Use variants like 'date_start', 'date_end', 'date_before', and 'date_after'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date the payment is made. Search payments by payment made date. Variants: date_start, date_end, date_before and date_after." + }, + "inferrable": true, + "http_endpoint_parameter_name": "date" + }, + { + "name": "payment_amount_filter", + "required": false, + "description": "Filter payments by amount paid to the vendor. Use variants: 'less_than', 'less_equals', 'greater_than', 'greater_equals' to specify the condition.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment amount made to the vendor. Search payments by payment amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_equals. In refunds, Amount refunded from the vendor payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "amount" + }, + { + "name": "search_by_payment_mode", + "required": false, + "description": "Search payments by payment mode using variants like 'startswith' or 'contains'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by payment mode. Variants: payment_mode_startswith and payment_mode_contains." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_mode" + }, + { + "name": "search_with_payment_notes", + "required": false, + "description": "Search payments using notes with options like startswith or contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search with Payment Notes. Variant: notes_startswith, notes_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "notes" + }, + { + "name": "vendor_id", + "required": false, + "description": "The unique ID of the vendor, used to search payments by vendor ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor. Search payments by vendor id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_id" + }, + { + "name": "last_modified_time_filter", + "required": false, + "description": "Filter vendor payments by their last modified time. Use a date-time string in ISO 8601 format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search with the Last Modified Time of the Vendor Payment" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_modified_time" + }, + { + "name": "search_payments_by_bill_id", + "required": false, + "description": "Search payments using the specific Bill ID associated with the transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by Bill ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "search_by_description", + "required": false, + "description": "Search payments by description. Use 'description_startswith' or 'description_contains' variants for specific matches.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by description. Variants: description_startswith and description_contains." + }, + "inferrable": true, + "http_endpoint_parameter_name": "description" + }, + { + "name": "filter_payment_mode", + "required": false, + "description": "Filter payments by payment mode. Options include All, Check, Cash, BankTransfer, Paypal, CreditCard, GoogleCheckout, Credit, Authorizenet, BankRemittance, Payflowpro, and Others.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter payments by mode. Allowed Values: PaymentMode.All, PaymentMode.Check, PaymentMode.Cash, PaymentMode.BankTransfer, PaymentMode.Paypal, PaymentMode.CreditCard, PaymentMode.GoogleCheckout, PaymentMode.Credit, PaymentMode.Authorizenet, PaymentMode.BankRemittance, PaymentMode.Payflowpro and PaymentMode.Others." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_text", + "required": false, + "description": "Search for payments using reference number, vendor name, or payment description.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by reference number or vendor name or payment description." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_payments_by", + "required": false, + "description": "Sort payments by column. Options: vendor_name, date, reference_number, amount, balance.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort the payment list. Allowed Values: vendor_name, date, reference_number, amount and balance." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "Specify the page number of results to fetch. Default is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "Specify the number of records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_vendor_payments'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_name", + "tool_parameter_name": "vendor_name_query", + "description": "Search payments by vendor name. Variants: vendor_name_startswith and vendor_name_contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by vendor name. Variants: vendor_name_startswith and vendor_name_contains." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reference_number", + "tool_parameter_name": "search_by_reference_number", + "description": "Search payments by reference number. Variants: reference_number_startswith and reference_number_contains. In refunds, reference number for the refund recorded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by reference number. Variants: reference_number_startswith and reference_number_contains. In refunds, reference number for the refund recorded." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_number", + "tool_parameter_name": "payment_number_search", + "description": "Search with Payment Number. Variant: payment_number_startswith, payment_number_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search with Payment Number. Variant: payment_number_startswith, payment_number_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "date", + "tool_parameter_name": "payment_date_filter", + "description": "Date the payment is made. Search payments by payment made date. Variants: date_start, date_end, date_before and date_after.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date the payment is made. Search payments by payment made date. Variants: date_start, date_end, date_before and date_after." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "amount", + "tool_parameter_name": "payment_amount_filter", + "description": "Payment amount made to the vendor. Search payments by payment amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_equals. In refunds, Amount refunded from the vendor payment.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment amount made to the vendor. Search payments by payment amount. Variants: amount_less_than, amount_less_equals, amount_greater_than and amount_greater_equals. In refunds, Amount refunded from the vendor payment." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_mode", + "tool_parameter_name": "search_by_payment_mode", + "description": "Search payments by payment mode. Variants: payment_mode_startswith and payment_mode_contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by payment mode. Variants: payment_mode_startswith and payment_mode_contains." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "notes", + "tool_parameter_name": "search_with_payment_notes", + "description": "Search with Payment Notes. Variant: notes_startswith, notes_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search with Payment Notes. Variant: notes_startswith, notes_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_id", + "tool_parameter_name": "vendor_id", + "description": "ID of the vendor. Search payments by vendor id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor. Search payments by vendor id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_modified_time", + "tool_parameter_name": "last_modified_time_filter", + "description": "Search with the Last Modified Time of the Vendor Payment", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search with the Last Modified Time of the Vendor Payment" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "search_payments_by_bill_id", + "description": "Search payments by Bill ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by Bill ID." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "description", + "tool_parameter_name": "search_by_description", + "description": "Search payments by description. Variants: description_startswith and description_contains.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by description. Variants: description_startswith and description_contains." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "filter_payment_mode", + "description": "Filter payments by mode. Allowed Values: PaymentMode.All, PaymentMode.Check, PaymentMode.Cash, PaymentMode.BankTransfer, PaymentMode.Paypal, PaymentMode.CreditCard, PaymentMode.GoogleCheckout, PaymentMode.Credit, PaymentMode.Authorizenet, PaymentMode.BankRemittance, PaymentMode.Payflowpro and PaymentMode.Others.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter payments by mode. Allowed Values: PaymentMode.All, PaymentMode.Check, PaymentMode.Cash, PaymentMode.BankTransfer, PaymentMode.Paypal, PaymentMode.CreditCard, PaymentMode.GoogleCheckout, PaymentMode.Credit, PaymentMode.Authorizenet, PaymentMode.BankRemittance, PaymentMode.Payflowpro and PaymentMode.Others." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_text", + "description": "Search payments by reference number or vendor name or payment description.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search payments by reference number or vendor name or payment description." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_payments_by", + "description": "Sort the payment list. Allowed Values: vendor_name, date, reference_number, amount and balance.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort the payment list. Allowed Values: vendor_name, date, reference_number, amount and balance." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/LogTimeEntries.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/LogTimeEntries.json new file mode 100644 index 00000000..47ccd20a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/LogTimeEntries.json @@ -0,0 +1,332 @@ +{ + "name": "LogTimeEntries", + "fully_qualified_name": "ZohoBooksApi.LogTimeEntries@0.1.0", + "description": "Log time entries in Zoho Books.\n\nUse this tool to log time entries for projects in Zoho Books. It should be called when you need to track time spent on project tasks.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required for logging time entries.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "time_entry_details", + "required": false, + "description": "JSON object containing details for a time entry: project_id, task_id, user_id, log_date, log_time, begin_time, end_time, is_billable, notes, start_timer, and cost_rate.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project." + }, + "task_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the task." + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user." + }, + "log_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the user spent on the task. Date-Format [HH:mm]" + }, + "log_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user spent on this task. Either send this attribute or begin and end time attributes. Time-Format [HH:mm]" + }, + "begin_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user started working on this task. Time-Format [HH:mm]" + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user stopped working on this task. Time-Format [HH:mm]" + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether it is billable or not." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the work done. Max-length [500]" + }, + "start_timer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start timer." + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly cost rate" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_time_entries'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/timeentries", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "time_entry_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project." + }, + "task_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the task." + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user." + }, + "log_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the user spent on the task. Date-Format [HH:mm]" + }, + "log_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user spent on this task. Either send this attribute or begin and end time attributes. Time-Format [HH:mm]" + }, + "begin_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user started working on this task. Time-Format [HH:mm]" + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user stopped working on this task. Time-Format [HH:mm]" + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether it is billable or not." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the work done. Max-length [500]" + }, + "start_timer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start timer." + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly cost rate" + } + }, + "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 \"required\": [\n \"project_id\",\n \"task_id\",\n \"user_id\",\n \"log_date\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"project_id\": {\n \"description\": \"ID of the project.\",\n \"type\": \"string\",\n \"example\": \"Network Distribution\"\n },\n \"task_id\": {\n \"description\": \"ID of the task.\",\n \"type\": \"string\",\n \"example\": \"460000000044001\"\n },\n \"user_id\": {\n \"description\": \"ID of the user.\",\n \"type\": \"string\",\n \"example\": \"460000000024003\"\n },\n \"log_date\": {\n \"description\": \"Date on which the user spent on the task. Date-Format [HH:mm]\",\n \"type\": \"string\",\n \"example\": \"2013-09-17\"\n },\n \"log_time\": {\n \"description\": \"Time the user spent on this task. Either send this attribute or begin and end time attributes. Time-Format [HH:mm]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"begin_time\": {\n \"description\": \"Time the user started working on this task. Time-Format [HH:mm]\",\n \"type\": \"string\",\n \"example\": \"10:00\"\n },\n \"end_time\": {\n \"description\": \"Time the user stopped working on this task. Time-Format [HH:mm]\",\n \"type\": \"string\",\n \"example\": \"15:00\"\n },\n \"is_billable\": {\n \"description\": \"Whether it is billable or not.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"notes\": {\n \"description\": \"Description of the work done. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"start_timer\": {\n \"description\": \"Start timer.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"cost_rate\": {\n \"description\": \"Hourly cost rate\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkBillOpen.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkBillOpen.json new file mode 100644 index 00000000..375735dc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkBillOpen.json @@ -0,0 +1,154 @@ +{ + "name": "MarkBillOpen", + "fully_qualified_name": "ZohoBooksApi.MarkBillOpen@0.1.0", + "description": "Mark a void bill as open in Zoho Books.\n\nUse this tool to change the status of a void bill to open in Zoho Books. Call this tool when you need to reactivate a bill that was previously voided.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization in Zoho Books to mark the bill as open.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_id", + "required": true, + "description": "Unique identifier of the bill to mark as open in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_bill_open'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/status/open", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_id", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkBillVoid.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkBillVoid.json new file mode 100644 index 00000000..6f108835 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkBillVoid.json @@ -0,0 +1,154 @@ +{ + "name": "MarkBillVoid", + "fully_qualified_name": "ZohoBooksApi.MarkBillVoid@0.1.0", + "description": "Mark a bill as void in Zoho Books.\n\nUse this tool to update the status of a bill to void in Zoho Books when you need to cancel or invalidate a bill.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Used to specify which organization's bill should be marked as void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier of the bill to mark as void in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_bill_void'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/status/void", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkContactInactive.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkContactInactive.json new file mode 100644 index 00000000..df76c0ff --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkContactInactive.json @@ -0,0 +1,154 @@ +{ + "name": "MarkContactInactive", + "fully_qualified_name": "ZohoBooksApi.MarkContactInactive@0.1.0", + "description": "Mark a Zoho Books contact as inactive.\n\nUse this tool to mark a contact as inactive in Zoho Books, allowing for better organization and active contact management.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_identifier", + "required": true, + "description": "Unique identifier of the contact in Zoho Books. Required to specify which contact to mark as inactive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_contact_inactive'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/inactive", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkCreditNoteOpen.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkCreditNoteOpen.json new file mode 100644 index 00000000..0190e1b3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkCreditNoteOpen.json @@ -0,0 +1,154 @@ +{ + "name": "MarkCreditNoteOpen", + "fully_qualified_name": "ZohoBooksApi.MarkCreditNoteOpen@0.1.0", + "description": "Convert a draft credit note to open status in Zoho Books.\n\nUse this tool to change the status of a credit note from Draft to Open in Zoho Books. This is helpful when you need to activate a credit note that has been prepared and saved as a draft.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to be converted to Open status.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_credit_note_open'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/status/open", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkCreditNoteVoid.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkCreditNoteVoid.json new file mode 100644 index 00000000..2aa6cff5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkCreditNoteVoid.json @@ -0,0 +1,154 @@ +{ + "name": "MarkCreditNoteVoid", + "fully_qualified_name": "ZohoBooksApi.MarkCreditNoteVoid@0.1.0", + "description": "Marks a credit note as void in Zoho Books.\n\nUse this tool to mark a specific credit note as void, altering its status in the Zoho Books system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books to mark the credit note as void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_identifier", + "required": true, + "description": "Unique identifier of the credit note to mark as void in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_credit_note_void'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/status/void", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_identifier", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkEstimateAsSent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkEstimateAsSent.json new file mode 100644 index 00000000..dfa871cf --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkEstimateAsSent.json @@ -0,0 +1,154 @@ +{ + "name": "MarkEstimateAsSent", + "fully_qualified_name": "ZohoBooksApi.MarkEstimateAsSent@0.1.0", + "description": "Mark a draft estimate as sent.\n\nUse this tool to mark a draft estimate in Zoho Books as sent. Call this when you need to update the status of an estimate to indicate it has been sent to a client.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to identify which organization's estimate to mark as sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "The unique identifier for the estimate to be marked as sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_estimate_sent'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/status/sent", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkFixedAssetAsDraft.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkFixedAssetAsDraft.json new file mode 100644 index 00000000..697080e2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkFixedAssetAsDraft.json @@ -0,0 +1,154 @@ +{ + "name": "MarkFixedAssetAsDraft", + "fully_qualified_name": "ZohoBooksApi.MarkFixedAssetAsDraft@0.1.0", + "description": "Set a fixed asset status to draft in Zoho Books.\n\nUse this tool to change the status of a specific fixed asset to draft in Zoho Books. This is useful when revising asset details or temporarily removing it from active use.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the fixed asset status will be changed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier for the fixed asset in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_fixed_asset_draft'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/status/draft", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkInvoiceAsDraft.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkInvoiceAsDraft.json new file mode 100644 index 00000000..b9234e7c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkInvoiceAsDraft.json @@ -0,0 +1,154 @@ +{ + "name": "MarkInvoiceAsDraft", + "fully_qualified_name": "ZohoBooksApi.MarkInvoiceAsDraft@0.1.0", + "description": "Mark a voided invoice as draft in Zoho Books.\n\nThis tool is used to change the status of a voided invoice to draft in Zoho Books. It should be called when there is a need to edit or resubmit an invoice previously marked as void.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to be marked as draft.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_invoice_draft'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/status/draft", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkInvoiceAsSent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkInvoiceAsSent.json new file mode 100644 index 00000000..8e34d602 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkInvoiceAsSent.json @@ -0,0 +1,154 @@ +{ + "name": "MarkInvoiceAsSent", + "fully_qualified_name": "ZohoBooksApi.MarkInvoiceAsSent@0.1.0", + "description": "Mark a draft invoice as sent.\n\nUse this tool to change the status of a draft invoice to 'sent'. Ideal for when an invoice is ready to be sent out to a client.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier of the organization for which the invoice will be marked as sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_unique_identifier", + "required": true, + "description": "Unique identifier of the invoice to be marked as sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_invoice_sent'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/status/sent", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_unique_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkInvoiceSent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkInvoiceSent.json new file mode 100644 index 00000000..28464858 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkInvoiceSent.json @@ -0,0 +1,154 @@ +{ + "name": "MarkInvoiceSent", + "fully_qualified_name": "ZohoBooksApi.MarkInvoiceSent@0.1.0", + "description": "Marks a draft retainer invoice as sent.\n\nUse this tool to update the status of a draft retainer invoice to 'sent' in Zoho Books. This is useful when you need to track the invoice as having been dispatched to a client.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This ID is necessary to specify which organization's invoice should be marked as sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to be marked as sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_retainer_invoice_sent'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/status/sent", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkItemInactive.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkItemInactive.json new file mode 100644 index 00000000..a0c8bebb --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkItemInactive.json @@ -0,0 +1,154 @@ +{ + "name": "MarkItemInactive", + "fully_qualified_name": "ZohoBooksApi.MarkItemInactive@0.1.0", + "description": "Mark an item as inactive in Zoho Books.\n\nUse this tool to mark an active item as inactive in Zoho Books. Useful for managing inventory and item status.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required for specifying which organization's item to mark as inactive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "item_identifier", + "required": true, + "description": "Unique identifier of the item to be marked inactive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_item_inactive'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/items/{item_id}/inactive", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "item_identifier", + "description": "Unique identifier of the item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkLocationInactive.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkLocationInactive.json new file mode 100644 index 00000000..29f49f7e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkLocationInactive.json @@ -0,0 +1,154 @@ +{ + "name": "MarkLocationInactive", + "fully_qualified_name": "ZohoBooksApi.MarkLocationInactive@0.1.0", + "description": "Marks a specific location as inactive in Zoho Books.\n\nUse this tool to set a location's status to inactive within Zoho Books. This is helpful for managing locations that are no longer in use.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books to mark the location as inactive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "location_identifier", + "required": true, + "description": "Unique identifier of the location to be marked as inactive in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "inferrable": true, + "http_endpoint_parameter_name": "location_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_location_inactive'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/locations/{location_id}/inactive", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "location_id", + "tool_parameter_name": "location_identifier", + "description": "Unique identifier of the location.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkPrimaryContactPerson.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkPrimaryContactPerson.json new file mode 100644 index 00000000..09d51c9f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkPrimaryContactPerson.json @@ -0,0 +1,154 @@ +{ + "name": "MarkPrimaryContactPerson", + "fully_qualified_name": "ZohoBooksApi.MarkPrimaryContactPerson@0.1.0", + "description": "Mark a contact person as primary for a contact.\n\nUse this tool to designate a specific contact person as the primary contact for a particular contact. Useful for managing contact hierarchies within an organization.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization. This is required to specify which organization's contact is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_person_identifier", + "required": true, + "description": "Unique identifier for the contact person to be marked as primary.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact person." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_person_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_contact_person_primary'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/contactpersons/{contact_person_id}/primary", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_person_id", + "tool_parameter_name": "contact_person_identifier", + "description": "Unique identifier of the contact person.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact person." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkPurchaseOrderBilled.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkPurchaseOrderBilled.json new file mode 100644 index 00000000..2edaf1b9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkPurchaseOrderBilled.json @@ -0,0 +1,154 @@ +{ + "name": "MarkPurchaseOrderBilled", + "fully_qualified_name": "ZohoBooksApi.MarkPurchaseOrderBilled@0.1.0", + "description": "Mark a purchase order as billed in Zoho Books.\n\nUse this tool to update the status of a purchase order to 'billed' in Zoho Books. This is useful when a purchase order has been fulfilled and needs to be recorded as billed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. Required to perform actions within the specified organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "Unique identifier of the purchase order to be marked as billed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_purchase_order_billed'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/status/billed", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkRetainerInvoiceAsDraft.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkRetainerInvoiceAsDraft.json new file mode 100644 index 00000000..a8b8272b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkRetainerInvoiceAsDraft.json @@ -0,0 +1,154 @@ +{ + "name": "MarkRetainerInvoiceAsDraft", + "fully_qualified_name": "ZohoBooksApi.MarkRetainerInvoiceAsDraft@0.1.0", + "description": "Mark a voided retainer invoice as draft.\n\nUse this tool to change the status of a voided retainer invoice back to draft. This is useful when you need to reuse or edit a voided invoice within Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to be marked as draft.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reatinerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_retainer_invoice_draft'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{reatinerinvoice_id}/status/draft", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reatinerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MarkSalesOrderAsVoid.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkSalesOrderAsVoid.json new file mode 100644 index 00000000..6f324825 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkSalesOrderAsVoid.json @@ -0,0 +1,205 @@ +{ + "name": "MarkSalesOrderAsVoid", + "fully_qualified_name": "ZohoBooksApi.MarkSalesOrderAsVoid@0.1.0", + "description": "Mark a sales order as void in Zoho Books.\n\nUse this tool to transition a specified sales order to a void status, effectively canceling it within Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier for the specific sales order to be marked as void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "void_reason", + "required": false, + "description": "The reason for converting the sales order to void. Maximum length is 500 characters.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reason to convert sales order as void . Maximum Length: 500 " + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_sales_order_as_void'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/status/void", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "void_reason", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reason to convert sales order as void . Maximum Length: 500 " + } + }, + "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 \"reason\": {\n \"description\": \"Reason to convert sales order as void . Maximum Length: 500 \",\n \"type\": \"string\",\n \"example\": \" \"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkVendorCreditVoid.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkVendorCreditVoid.json new file mode 100644 index 00000000..2de144cc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MarkVendorCreditVoid.json @@ -0,0 +1,154 @@ +{ + "name": "MarkVendorCreditVoid", + "fully_qualified_name": "ZohoBooksApi.MarkVendorCreditVoid@0.1.0", + "description": "Mark an existing vendor credit as void in Zoho Books.\n\nUse this tool to mark a specific vendor credit as void. Typically called when you need to invalidate a previously issued vendor credit in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier for the vendor credit to be marked as void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_vendor_credit_void'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/status/void", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/MatchBankTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MatchBankTransaction.json new file mode 100644 index 00000000..c2f1e7ea --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/MatchBankTransaction.json @@ -0,0 +1,272 @@ +{ + "name": "MatchBankTransaction", + "fully_qualified_name": "ZohoBooksApi.MatchBankTransaction@0.1.0", + "description": "Match an uncategorized bank transaction with an existing one.\n\nUse this tool to match an uncategorized transaction with an existing transaction in Zoho Books, ensuring proper categorization and reconciliation.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "Unique identifier of the bank transaction to be matched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "account_id", + "required": false, + "description": "The mandatory Account ID for listing transactions to match. This is required to specify the bank account in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "transactions_to_be_matched", + "required": false, + "description": "A JSON array of transactions to be matched, with each containing a transaction_id and transaction_type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "transactions_to_be_matched": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "transaction_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Transaction" + }, + "transaction_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'match_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/match", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_id", + "description": "Mandatory Account id for which transactions are to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "transactions_to_be_matched", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "transactions_to_be_matched": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "transaction_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Transaction" + }, + "transaction_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + } + }, + "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 \"transactions_to_be_matched\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"transaction_id\": {\n \"description\": \"ID of the Transaction\",\n \"type\": \"string\",\n \"example\": \"460000000048017\"\n },\n \"transaction_type\": {\n \"description\": \"Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :\",\n \"type\": \"string\",\n \"example\": \"deposit\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyInvoice.json new file mode 100644 index 00000000..fd86c11c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyInvoice.json @@ -0,0 +1,649 @@ +{ + "name": "ModifyInvoice", + "fully_qualified_name": "ZohoBooksApi.ModifyInvoice@0.1.0", + "description": "Update an existing invoice in Zoho Books.\n\nThis tool updates the information of an existing retainer invoice in Zoho Books. Use it when you need to modify invoice details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization within Zoho Books to which the retainer invoice belongs. This is required to ensure the update is applied to the correct entity.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + }, + { + "name": "invoice_details", + "required": false, + "description": "A JSON object with details for updating the retainer invoice, including customer_id, reference_number, date, contact_persons_associated, custom_fields, notes, terms, location_id, line_items, payment_options, template_id, place_of_supply, and project_id.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer the retainer invoice has to be created." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The reference number of the retainer invoice. Max-length [100]" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of creation of the retainer invoice." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The index of the custom field" + }, + "show_on_pdf": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean value to check if the custom field is to be dispplayed on the pdf." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The label of the custom field." + } + }, + "description": "Custom fields for a reatiner invoice." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The notes added below expressing gratitude or for conveying some information." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The terms added below expressing gratitude or for conveying some information." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the line items. Max-length [2000]" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The order of the line item_order" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + } + }, + "description": "Line items of a retainer invoice." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the retainer invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the retainer invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the pdf template associated with the retainer invoice." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_retainer_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer the retainer invoice has to be created." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The reference number of the retainer invoice. Max-length [100]" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of creation of the retainer invoice." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The index of the custom field" + }, + "show_on_pdf": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean value to check if the custom field is to be dispplayed on the pdf." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The label of the custom field." + } + }, + "description": "Custom fields for a reatiner invoice." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The notes added below expressing gratitude or for conveying some information." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The terms added below expressing gratitude or for conveying some information." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the line items. Max-length [2000]" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The order of the line item_order" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + } + }, + "description": "Line items of a retainer invoice." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the retainer invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the retainer invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the pdf template associated with the retainer invoice." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"ID of the customer the retainer invoice has to be created.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"reference_number\": {\n \"description\": \"The reference number of the retainer invoice. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"date\": {\n \"description\": \"The date of creation of the retainer invoice.\",\n \"type\": \"string\",\n \"example\": \"2013-11-17\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for a reatiner invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"The index of the custom field\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"show_on_pdf\": {\n \"description\": \"Boolean value to check if the custom field is to be dispplayed on the pdf.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"value\": {\n \"type\": \"string\",\n \"example\": \"The value of the custom field\"\n },\n \"label\": {\n \"description\": \"The label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Delivery Date\"\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"The notes added below expressing gratitude or for conveying some information.\",\n \"type\": \"string\",\n \"example\": \"Looking forward for your business.\"\n },\n \"terms\": {\n \"description\": \"The terms added below expressing gratitude or for conveying some information.\",\n \"type\": \"string\",\n \"example\": \"Terms & Conditions apply\"\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of a retainer invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"The description of the line items. Max-length [2000]\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"item_order\": {\n \"description\": \"The order of the line item_order\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n }\n }\n }\n },\n \"payment_options\": {\n \"description\": \"Payment options for the retainer invoice, online payment gateways and bank accounts. Will be displayed in the pdf.\",\n \"type\": \"object\",\n \"properties\": {\n \"payment_gateways\": {\n \"description\": \"Online payment gateways through which payment can be made.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"configured\": {\n \"description\": \"Boolean check to see if a payment gateway ahs been configured\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"additional_field1\": {\n \"description\": \"Paypal payment method. Allowed Values: standard and adaptive\",\n \"type\": \"string\",\n \"example\": \"standard\"\n },\n \"gateway_name\": {\n \"description\": \"Name of the payment gateway associated with the retainer invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree\",\n \"type\": \"string\",\n \"example\": \"paypal\"\n }\n }\n }\n }\n }\n },\n \"template_id\": {\n \"description\": \"ID of the pdf template associated with the retainer invoice.\",\n \"type\": \"string\",\n \"example\": 982000000000143\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 982000000567154\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyInvoiceAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyInvoiceAddress.json new file mode 100644 index 00000000..ef78c468 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyInvoiceAddress.json @@ -0,0 +1,285 @@ +{ + "name": "ModifyInvoiceAddress", + "fully_qualified_name": "ZohoBooksApi.ModifyInvoiceAddress@0.1.0", + "description": "Update the billing address for a specific invoice.\n\nUse this tool to update the billing address for a particular invoice in Zoho Books. It modifies the address details for a specified invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique string ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to update the billing address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "billing_address_details", + "required": false, + "description": "A JSON object containing 'address', 'city', 'state', 'zip', 'country', and 'fax' for updating billing details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_invoice_billing_address'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/address/billing", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "billing_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "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 \"address\": {\n \"description\": \"Billing address for the invoice\",\n \"type\": \"string\",\n \"example\": \"B-1104, 11F, \\nHorizon International Tower, \\nNo. 6, ZhiChun Road, HaiDian District\"\n },\n \"city\": {\n \"description\": \"City of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"state\": {\n \"description\": \"State of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"zip\": {\n \"description\": \"Zip code of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": 1000881\n },\n \"country\": {\n \"description\": \"Country of the customer\\u2019s billing address.\",\n \"type\": \"string\"\n },\n \"fax\": {\n \"description\": \"Customer's fax number.\",\n \"type\": \"string\",\n \"example\": \"+86-10-82637827\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyRecurringExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyRecurringExpense.json new file mode 100644 index 00000000..b23cecba --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyRecurringExpense.json @@ -0,0 +1,849 @@ +{ + "name": "ModifyRecurringExpense", + "fully_qualified_name": "ZohoBooksApi.ModifyRecurringExpense@0.1.0", + "description": "Update a recurring expense in Zoho Books.\n\nUse this tool to modify details of an existing recurring expense in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization for which the recurring expense needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_expense_identifier", + "required": true, + "description": "Unique identifier for the recurring expense to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_expense_id" + }, + { + "name": "expense_details", + "required": false, + "description": "JSON object containing details for updating the recurring expense, including start date, end date, amounts, tax information, and supply locations. Should adhere to the specified schema.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Expense. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by description. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the code for tax exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the tax exemption" + } + }, + "description": null + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer id." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a recurring-expense." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_recurring_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_expense_id", + "tool_parameter_name": "recurring_expense_identifier", + "description": "Unique identifier of the recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "expense_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Expense. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by description. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the code for tax exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the tax exemption" + } + }, + "description": null + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer id." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a recurring-expense." + } + }, + "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 \"required\": [\n \"account_id\",\n \"recurrence_name\",\n \"start_date\",\n \"recurrence_frequency\",\n \"repeat_every\",\n \"amount\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"account_id\": {\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"recurrence_name\": {\n \"description\": \"Name of the Recurring Expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Monthly Rental\"\n },\n \"start_date\": {\n \"description\": \"Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \"2016-11-19T00:00:00.000Z\"\n },\n \"end_date\": {\n \"description\": \"Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"recurrence_frequency\": {\n \"type\": \"string\",\n \"example\": \"months\"\n },\n \"repeat_every\": {\n \"type\": \"string\",\n \"example\": 1\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"string\",\n \"example\": 982000000567254,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"type\": \"string\",\n \"example\": 10763000000140068\n },\n \"account_id\": {\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"description\": {\n \"description\": \"Search recurring expenses by description. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"amount\": {\n \"description\": \"Recurring Expense amount.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"item_order\": {\n \"type\": \"string\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"in\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"string\",\n \"example\": 982000000567254,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Enter the code for tax exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Enter ID of the tax exemption\",\n \"type\": \"string\",\n \"example\": 982000000567267,\n \"x-node_available_in\": [\n \"in\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n },\n \"amount\": {\n \"description\": \"Recurring Expense amount.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"eu_vat_not_registered\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"in\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"is_inclusive_tax\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_billable\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"customer_id\": {\n \"description\": \"Search expenses by customer id.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"project_id\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"exchange_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for a recurring-expense.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyRetainerInvoiceTemplate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyRetainerInvoiceTemplate.json new file mode 100644 index 00000000..3ca1ed88 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ModifyRetainerInvoiceTemplate.json @@ -0,0 +1,187 @@ +{ + "name": "ModifyRetainerInvoiceTemplate", + "fully_qualified_name": "ZohoBooksApi.ModifyRetainerInvoiceTemplate@0.1.0", + "description": "Update the PDF template for a retainer invoice.\n\nUse this tool to update the PDF template associated with a specific retainer invoice by providing the retainer invoice ID and the template ID. It should be called when you need to change the appearance or format of a retainer invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The ID of the organization to update the retainer invoice template for. It should be a string representing the organization's unique identifier in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier for the retainer invoice to update the PDF template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + }, + { + "name": "retainer_invoice_template_id", + "required": true, + "description": "Unique identifier of the retainer invoice template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_retainer_invoice_template'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/templates/{template_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "template_id", + "tool_parameter_name": "retainer_invoice_template_id", + "description": "Unique identifier of the retainer invoice template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice template." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/OpenPurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/OpenPurchaseOrder.json new file mode 100644 index 00000000..bb4026b2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/OpenPurchaseOrder.json @@ -0,0 +1,154 @@ +{ + "name": "OpenPurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.OpenPurchaseOrder@0.1.0", + "description": "Mark a draft purchase order as open.\n\nUse this tool to change the status of a draft purchase order to 'open' in Zoho Books, making it active and processable. Call this when you need to activate draft purchase orders.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books whose purchase order status needs to be changed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_identifier", + "required": true, + "description": "Unique identifier for the purchase order to be marked as open.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_purchase_order_open'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/status/open", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_identifier", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/OpenSalesOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/OpenSalesOrder.json new file mode 100644 index 00000000..a0bc0a8f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/OpenSalesOrder.json @@ -0,0 +1,154 @@ +{ + "name": "OpenSalesOrder", + "fully_qualified_name": "ZohoBooksApi.OpenSalesOrder@0.1.0", + "description": "Mark a draft sales order as open in Zoho Books.\n\nUse this tool to change the status of a draft sales order to open in Zoho Books. This is useful when a sales order needs to be moved from draft status to active status, indicating it's ready for further processing.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization where the sales order is to be marked as open.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to mark as open in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_sales_order_as_open'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/status/open", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/OpenVendorCreditStatus.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/OpenVendorCreditStatus.json new file mode 100644 index 00000000..155aecae --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/OpenVendorCreditStatus.json @@ -0,0 +1,154 @@ +{ + "name": "OpenVendorCreditStatus", + "fully_qualified_name": "ZohoBooksApi.OpenVendorCreditStatus@0.1.0", + "description": "Change a vendor credit status to open in Zoho Books.\n\nUse this tool to update the status of an existing vendor credit to 'open' in Zoho Books. This is useful when you need to reactivate a vendor credit for further processing or adjustments.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books whose vendor credit status needs to be marked as open.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier for the vendor credit to be marked as open.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_vendor_credit_open'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/status/open", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/PostProjectComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/PostProjectComment.json new file mode 100644 index 00000000..b341fa21 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/PostProjectComment.json @@ -0,0 +1,205 @@ +{ + "name": "PostProjectComment", + "fully_qualified_name": "ZohoBooksApi.PostProjectComment@0.1.0", + "description": "Post a comment to a specified project.\n\nThis tool posts a comment to a specific project in Zoho Books. Use it when you need to add a comment or note to a project for tracking or communication purposes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier of the organization for which the comment is being posted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_unique_identifier", + "required": true, + "description": "Unique identifier for the project in Zoho Books. Required to specify the target project for adding a comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "comment_description", + "required": false, + "description": "The content of the comment to post to the project. Maximum length is 500 characters.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'add_project_comment'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/comments", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_unique_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "comment_description", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + } + }, + "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 \"required\": [\n \"description\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"Project description. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \"Billing based on task hours\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/PublishDraftJournal.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/PublishDraftJournal.json new file mode 100644 index 00000000..159d6566 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/PublishDraftJournal.json @@ -0,0 +1,154 @@ +{ + "name": "PublishDraftJournal", + "fully_qualified_name": "ZohoBooksApi.PublishDraftJournal@0.1.0", + "description": "Mark a draft journal as published in Zoho Books.\n\nUse this tool to change the status of a draft journal entry to published within Zoho Books. This can be helpful when a draft is ready for final publication.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books. Required to identify the organization where the journal resides.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "journal_identifier", + "required": true, + "description": "Unique identifier of the journal to be marked as published.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "journal_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_journal_published'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/journals/{journal_id}/status/publish", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "journal_id", + "tool_parameter_name": "journal_identifier", + "description": "Unique identifier of the journal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RefundCreditNote.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundCreditNote.json new file mode 100644 index 00000000..8eb53bef --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundCreditNote.json @@ -0,0 +1,317 @@ +{ + "name": "RefundCreditNote", + "fully_qualified_name": "ZohoBooksApi.RefundCreditNote@0.1.0", + "description": "Process a credit note refund in Zoho Books.\n\nUse this tool to issue a refund for a specified credit note in Zoho Books. It is triggered when there's a need to reimburse the amount associated with a credit note.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books for which the credit note refund is being processed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to refund. This is required to specify which credit note the refund applies to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "credit_note_refund_details", + "required": false, + "description": "JSON object containing details for processing the credit note refund, including date, refund mode, and amount.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The method of refund." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account from which credit note is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_credit_note_refund'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "credit_note_refund_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The method of refund." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account from which credit note is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + } + }, + "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 \"date\": {\n \"description\": \"The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations.\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"refund_mode\": {\n \"description\": \"The method of refund.\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"payment_form\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"cash\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reference_number\": {\n \"description\": \"Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"amount\": {\n \"description\": \"Amount paid for the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs.\",\n \"type\": \"string\",\n \"example\": \"5.5\"\n },\n \"from_account_id\": {\n \"description\": \"The account from which credit note is refunded.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundExcessPayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundExcessPayment.json new file mode 100644 index 00000000..56d7e9fd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundExcessPayment.json @@ -0,0 +1,317 @@ +{ + "name": "RefundExcessPayment", + "fully_qualified_name": "ZohoBooksApi.RefundExcessPayment@0.1.0", + "description": "Refund the excess amount paid by a customer.\n\nUse this tool to refund any excess amount received from a customer payment. It is called when there is a need to process a refund for overpaid amounts in customer transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to process the refund under. Ensure this matches the ID in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "customer_payment_identifier", + "required": true, + "description": "Unique identifier for the customer's payment to be refunded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_payment_id" + }, + { + "name": "refund_detail", + "required": false, + "description": "Details of the refund, including date, amount, refund method, reference number, and descriptions. Encapsulates all necessary information for processing the refund.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The method of refund. Max-length [50]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account from which payment is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'create_customer_payment_refund'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_payment_id", + "tool_parameter_name": "customer_payment_identifier", + "description": "Unique identifier of the customer payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "refund_detail", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The method of refund. Max-length [50]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account from which payment is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + } + }, + "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 \"required\": [\n \"date\",\n \"amount\",\n \"from_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"description\": \"Date on which payment is made. Format [yyyy-mm-dd]\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"refund_mode\": {\n \"description\": \"The method of refund. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"reference_number\": {\n \"description\": \"Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"amount\": {\n \"description\": \"Amount paid in the respective payment.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1,\n \"default\": 1\n },\n \"payment_form\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"cash\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"from_account_id\": {\n \"description\": \"The account from which payment is refunded.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"description\": {\n \"description\": \"Description about the payment.\",\n \"type\": \"string\",\n \"example\": \"Payment has been added to INV-384\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundVendorCredit.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundVendorCredit.json new file mode 100644 index 00000000..e9a138e9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundVendorCredit.json @@ -0,0 +1,301 @@ +{ + "name": "RefundVendorCredit", + "fully_qualified_name": "ZohoBooksApi.RefundVendorCredit@0.1.0", + "description": "Process a refund for vendor credit.\n\nUse this tool to initiate a refund for a specified vendor credit. Suitable when needing to refund amounts credited to a vendor.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the vendor credit refund is being processed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier for the vendor credit that needs to be refunded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "refund_details", + "required": false, + "description": "JSON object containing details of the refund, including date, refund mode, reference number, amount, exchange rate, account ID, and description.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of Vendor Credit Refund" + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Refund" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'refund_vendor_credit'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "refund_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of Vendor Credit Refund" + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Refund" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document." + } + }, + "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 \"required\": [\n \"date\",\n \"amount\",\n \"account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"description\": \"Date of Vendor Credit Refund\",\n \"type\": \"string\",\n \"example\": \"2014-08-30\"\n },\n \"refund_mode\": {\n \"description\": \"Mode of Refund\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"reference_number\": {\n \"description\": \"Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]\",\n \"type\": \"string\"\n },\n \"amount\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 13\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes.\",\n \"type\": \"string\",\n \"example\": \"460000000020097\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundVendorOverpayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundVendorOverpayment.json new file mode 100644 index 00000000..a10eb129 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RefundVendorOverpayment.json @@ -0,0 +1,301 @@ +{ + "name": "RefundVendorOverpayment", + "fully_qualified_name": "ZohoBooksApi.RefundVendorOverpayment@0.1.0", + "description": "Refund excess amount paid to a vendor.\n\nUse this tool to process a refund for any excess amount that has been paid to a vendor. This should be called when an overpayment needs to be returned to the vendor.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID representing the organization. Required to refund vendor overpayment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_payment_id", + "required": true, + "description": "Unique identifier for the vendor payment to be refunded.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "vendor_payment_refund_details", + "required": false, + "description": "A JSON object containing details necessary to process the vendor payment refund, including date, refund mode, reference number, amount, exchange rate, account ID, and a description of the refund.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the Vendor Payment Refund." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode in which refund is made." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the Payment Refund" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account to which payment is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Payment Refund" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'refund_excess_vendor_payment'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "vendor_payment_id", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "vendor_payment_refund_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the Vendor Payment Refund." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode in which refund is made." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the Payment Refund" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account to which payment is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Payment Refund" + } + }, + "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 \"required\": [\n \"date\",\n \"amount\",\n \"to_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"description\": \"Date of the Vendor Payment Refund.\",\n \"type\": \"string\",\n \"example\": \"2017-01-10\"\n },\n \"refund_mode\": {\n \"description\": \"Mode in which refund is made.\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the Payment Refund\",\n \"type\": \"string\"\n },\n \"amount\": {\n \"description\": \"Total Amount of Vendor Payment\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 500\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate of the currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"to_account_id\": {\n \"description\": \"The account to which payment is refunded.\",\n \"type\": \"string\",\n \"example\": \"460000000000385\"\n },\n \"description\": {\n \"description\": \"Description of the Payment Refund\",\n \"type\": \"string\",\n \"example\": \"Payment Refund\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RejectPurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RejectPurchaseOrder.json new file mode 100644 index 00000000..94e15fbd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RejectPurchaseOrder.json @@ -0,0 +1,154 @@ +{ + "name": "RejectPurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.RejectPurchaseOrder@0.1.0", + "description": "Reject a specific purchase order in Zoho Books.\n\nThis tool should be called when you need to reject a purchase order in the Zoho Books system. It confirms the rejection of the specified purchase order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "A unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "The ID of the purchase order to be rejected in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'reject_purchase_orders'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/reject", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "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_books_api/arcade_zoho_books_api/wrapper_tools/RemindCustomerInvoicePayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemindCustomerInvoicePayment.json new file mode 100644 index 00000000..974481d3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemindCustomerInvoicePayment.json @@ -0,0 +1,335 @@ +{ + "name": "RemindCustomerInvoicePayment", + "fully_qualified_name": "ZohoBooksApi.RemindCustomerInvoicePayment@0.1.0", + "description": "Remind customers of unpaid invoices by email.\n\nUse this tool to notify customers about unpaid invoices through email. It works for invoices that are open or overdue.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. It specifies which organization's invoice reminders to manage.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to send a payment reminder for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "email_attachments", + "required": false, + "description": "Comma-separated list of file URLs to attach to the reminder email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachments" + }, + { + "name": "email_details", + "required": false, + "description": "JSON object containing email details such as recipients, CCs, subject, body, and whether to send from the organization's email.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject of the mail" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The body of the mail" + }, + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "include_customer_statement_pdf", + "required": false, + "description": "Set to true to include a customer statement PDF with the email reminder.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send customer statement pdf a with email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send_customer_statement" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'remind_customer_for_invoice_payment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/paymentreminder", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send_customer_statement", + "tool_parameter_name": "include_customer_statement_pdf", + "description": "Send customer statement pdf a with email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send customer statement pdf a with email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachments", + "tool_parameter_name": "email_attachments", + "description": "Files to be attached to the email", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "email_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject of the mail" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The body of the mail" + }, + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + } + }, + "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 \"required\": [\n \"cc_mail_ids\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"to_mail_ids\": {\n \"description\": \"Array of email address of the recipients.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"willsmith@bowmanfurniture.com\"\n ]\n },\n \"cc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be cced.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"peterparker@bowmanfurniture.com\"\n ]\n },\n \"subject\": {\n \"description\": \"The subject of the mail\",\n \"type\": \"string\",\n \"example\": \"Invoice from Zillium Inc (Invoice#: INV-00001)\"\n },\n \"body\": {\n \"description\": \"The body of the mail\",\n \"type\": \"string\",\n \"example\": \"
Dear Mr. Sujin, 

You might have missed the payment date and the invoice is now overdue by 1 days.

----------------------------------------------------------------------------------------

Invoice# : INV-000004

Dated : 23 Dec 2016
----------------------------------------------------------------------------------------
 Due Date         :   23 Dec 2016
 Amount           :   $139.65
----------------------------------------------------------------------------------------

Not to worry at all ! View your invoice and take the easy way out by making an online payment.

If you have already paid, please accept our apologies and kindly ignore this payment reminder.


Regards,

David Sujin
Zillium Inc


\"\n },\n \"send_from_org_email_id\": {\n \"description\": \"Boolean to trigger the email from the organization's email address\",\n \"type\": \"boolean\",\n \"example\": false\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveCurrency.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveCurrency.json new file mode 100644 index 00000000..e96d9cee --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveCurrency.json @@ -0,0 +1,154 @@ +{ + "name": "RemoveCurrency", + "fully_qualified_name": "ZohoBooksApi.RemoveCurrency@0.1.0", + "description": "Remove a specific currency from the system.\n\nThis tool deletes a currency. It should be used when a currency that is no longer needed should be removed, as long as it is not associated with any transactions.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID representing the organization for which the currency deletion is requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_identifier", + "required": true, + "description": "Unique identifier of the currency to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_currency'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies/{currency_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "currency_identifier", + "description": "Unique identifier of the currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RemoveInvoiceCredit.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveInvoiceCredit.json new file mode 100644 index 00000000..1f0b2799 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveInvoiceCredit.json @@ -0,0 +1,187 @@ +{ + "name": "RemoveInvoiceCredit", + "fully_qualified_name": "ZohoBooksApi.RemoveInvoiceCredit@0.1.0", + "description": "Remove a specific credit applied to an invoice.\n\nUse this tool to delete a particular credit that has been applied to an invoice when adjustments are needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization from which the credit is being removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to remove a credit from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "credit_note_invoice_id", + "required": true, + "description": "Unique identifier of the credit note invoice to be removed from the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnotes_invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_invoice_applied_credit'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/creditsapplied/{creditnotes_invoice_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnotes_invoice_id", + "tool_parameter_name": "credit_note_invoice_id", + "description": "Unique identifier of the credit note invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RemoveUserFromOrganization.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveUserFromOrganization.json new file mode 100644 index 00000000..693ab640 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveUserFromOrganization.json @@ -0,0 +1,154 @@ +{ + "name": "RemoveUserFromOrganization", + "fully_qualified_name": "ZohoBooksApi.RemoveUserFromOrganization@0.1.0", + "description": "Delete a user from the organization.\n\nThis tool removes a specified user from the organization in Zoho Books. It should be called when there is a need to delete a user's access or association with the organization.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization from which the user will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "user_unique_identifier", + "required": true, + "description": "Unique identifier of the user to be deleted from the organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_user'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/users/{user_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_unique_identifier", + "description": "Unique identifier of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RemoveUserFromProject.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveUserFromProject.json new file mode 100644 index 00000000..5744db0d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveUserFromProject.json @@ -0,0 +1,187 @@ +{ + "name": "RemoveUserFromProject", + "fully_qualified_name": "ZohoBooksApi.RemoveUserFromProject@0.1.0", + "description": "Remove a user from a specific project in Zoho Books.\n\nThis tool is used to remove a user from a project within Zoho Books. Call this tool when you need to manage project participants by deleting a user's access to a particular project.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "The unique identifier for the project from which the user will be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "user_identifier", + "required": true, + "description": "Unique identifier of the user to be removed from the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_project_user'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/users/{user_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "Unique identifier of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RemoveVendorBillCredit.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveVendorBillCredit.json new file mode 100644 index 00000000..1c15cacf --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RemoveVendorBillCredit.json @@ -0,0 +1,187 @@ +{ + "name": "RemoveVendorBillCredit", + "fully_qualified_name": "ZohoBooksApi.RemoveVendorBillCredit@0.1.0", + "description": "Delete credits applied to a vendor bill.\n\nUse this tool to remove credits applied to a specific vendor bill using the vendor_credit_id and vendor_credit_bill_id.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the vendor credit bill is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier of the vendor credit to be deleted. Required for bill credit removal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "vendor_credit_bill_identifier", + "required": true, + "description": "Unique identifier of the vendor credit bill to delete the applied credits.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'delete_vendor_credit_bill'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/bills/{vendor_credit_bill_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_bill_id", + "tool_parameter_name": "vendor_credit_bill_identifier", + "description": "Unique identifier of the vendor credit bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RestoreBankTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RestoreBankTransaction.json new file mode 100644 index 00000000..09f466df --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RestoreBankTransaction.json @@ -0,0 +1,187 @@ +{ + "name": "RestoreBankTransaction", + "fully_qualified_name": "ZohoBooksApi.RestoreBankTransaction@0.1.0", + "description": "Restores an excluded bank transaction in your account.\n\nUse this tool to recover a previously excluded bank transaction in your Zoho Books account, identified by the transaction ID. It should be called when you need to reinstate transactions that were mistakenly removed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the Zoho Books organization to restore the transaction for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "The unique identifier for the specific bank transaction to be restored.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "account_id", + "required": false, + "description": "Mandatory Account ID for which transactions are to be restored.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'restore_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/uncategorized/{transaction_id}/restore", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_id", + "description": "Mandatory Account id for which transactions are to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ResumeRecurringBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ResumeRecurringBill.json new file mode 100644 index 00000000..48ee83a6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ResumeRecurringBill.json @@ -0,0 +1,154 @@ +{ + "name": "ResumeRecurringBill", + "fully_qualified_name": "ZohoBooksApi.ResumeRecurringBill@0.1.0", + "description": "Resume a stopped recurring bill in Zoho Books.\n\nUse this tool to restart a suspended recurring bill in Zoho Books, ensuring payments continue as scheduled.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_bill_identifier", + "required": true, + "description": "Provide the unique identifier of the recurring bill to resume it in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'resume_recurring_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringbills/{recurring_bill_id}/status/resume", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_bill_id", + "tool_parameter_name": "recurring_bill_identifier", + "description": "Unique identifier of the recurring bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ResumeRecurringExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ResumeRecurringExpense.json new file mode 100644 index 00000000..bf630628 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ResumeRecurringExpense.json @@ -0,0 +1,154 @@ +{ + "name": "ResumeRecurringExpense", + "fully_qualified_name": "ZohoBooksApi.ResumeRecurringExpense@0.1.0", + "description": "Resumes a stopped recurring expense cycle.\n\nUse this tool to restart a recurring expense that has been previously paused in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_expense_id", + "required": true, + "description": "The unique identifier for the recurring expense to be resumed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'resume_recurring_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}/status/resume", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_expense_id", + "tool_parameter_name": "recurring_expense_id", + "description": "Unique identifier of the recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/ResumeRecurringInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ResumeRecurringInvoice.json new file mode 100644 index 00000000..8d0cd257 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/ResumeRecurringInvoice.json @@ -0,0 +1,205 @@ +{ + "name": "ResumeRecurringInvoice", + "fully_qualified_name": "ZohoBooksApi.ResumeRecurringInvoice@0.1.0", + "description": "Resumes a stopped recurring invoice.\n\nUse this tool to resume a recurring invoice that has been paused.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose invoice needs to be resumed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_invoice_id", + "required": true, + "description": "Unique identifier of the recurring invoice to be resumed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_invoice_id" + }, + { + "name": "recurring_invoice_details", + "required": false, + "description": "JSON object containing details to resume a recurring invoice, including the 'recurring_invoice_id'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice generated by the server." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'resume_recurring_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}/status/resume", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_invoice_id", + "tool_parameter_name": "recurring_invoice_id", + "description": "Unique identifier of the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "recurring_invoice_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice generated by the server." + } + }, + "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 \"recurring_invoice_id\": {\n \"description\": \"Unique ID of the recurring invoice generated by the server.\",\n \"type\": \"string\",\n \"example\": \"90300000072369\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveBillAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveBillAttachment.json new file mode 100644 index 00000000..c0b1c58a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveBillAttachment.json @@ -0,0 +1,187 @@ +{ + "name": "RetrieveBillAttachment", + "fully_qualified_name": "ZohoBooksApi.RetrieveBillAttachment@0.1.0", + "description": "Retrieve the attachment from a specific bill.\n\nCall this tool to get the file attached to a bill using its bill ID. Useful for accessing invoices or related documents stored in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to specify which organization's bill attachment to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "The unique identifier of the bill to retrieve its attachment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "get_thumbnail", + "required": false, + "description": "Set to true to get the thumbnail of the attachment instead of the full file.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the thumbnail of the attachment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "preview" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_bill_attachment'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/attachment", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "preview", + "tool_parameter_name": "get_thumbnail", + "description": "Get the thumbnail of the attachment.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the thumbnail of the attachment." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveBillDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveBillDetails.json new file mode 100644 index 00000000..428fac63 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveBillDetails.json @@ -0,0 +1,154 @@ +{ + "name": "RetrieveBillDetails", + "fully_qualified_name": "ZohoBooksApi.RetrieveBillDetails@0.1.0", + "description": "Retrieve the details of a specific bill.\n\nUse this tool to get comprehensive details about a specific bill by providing its ID. Useful for retrieving bill information such as amount, due date, or vendor details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the bill details are being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier of the bill to retrieve its details. This should be provided as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveContactDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveContactDetails.json new file mode 100644 index 00000000..563ecce0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveContactDetails.json @@ -0,0 +1,154 @@ +{ + "name": "RetrieveContactDetails", + "fully_qualified_name": "ZohoBooksApi.RetrieveContactDetails@0.1.0", + "description": "Retrieve comprehensive details of a specific contact.\n\nThis tool should be called to access complete information about a contact, including basic details, addresses, payment terms, and financial data such as outstanding amounts and transaction history.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier of the organization for which the contact details are being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_id", + "required": true, + "description": "Unique identifier for the contact to retrieve detailed information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_contact'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_id", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveContactList.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveContactList.json new file mode 100644 index 00000000..a1fe2d02 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveContactList.json @@ -0,0 +1,649 @@ +{ + "name": "RetrieveContactList", + "fully_qualified_name": "ZohoBooksApi.RetrieveContactList@0.1.0", + "description": "Retrieve and filter a list of contacts from Zoho Books.\n\nUse this tool to obtain a detailed list of contacts with options for advanced filtering by name, company, status, and more. Ideal for managing contact information and accessing financial data like outstanding amounts and credit limits. Supports pagination for efficient data handling.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "Provide the ID of the organization to retrieve relevant contact data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "filter_contact_by_type", + "required": false, + "description": "Filter contacts by type. Accepts 'customer' or 'vendor'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by contact type. Allowed Values: customer, vendor." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_type" + }, + { + "name": "contact_name_filter", + "required": false, + "description": "Filter contacts by name. Use 'startswith' or 'contains' for match type. Max-length: 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by contact name. Max-length [100] Variants: contact_name_startswith and contact_name_contains. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_name" + }, + { + "name": "search_by_company_name", + "required": false, + "description": "Search contacts by company name. Maximum length is 100 characters. Use variants like 'company_name_startswith' and 'company_name_contains' for different search methods.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by company name. Max-length [100] Variants: company_name_startswith and company_name_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "company_name" + }, + { + "name": "primary_contact_first_name", + "required": false, + "description": "Search contacts by the first name of the primary contact person. Use 'first_name_startswith' or 'first_name_contains'. Max-length 100.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by first name of the primary contact person. Max-length [100] Variants: first_name_startswith and first_name_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "first_name" + }, + { + "name": "search_by_last_name", + "required": false, + "description": "Search contacts by last name of the primary contact person. Supports 'startswith' or 'contains' options. Max-length 100.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by last name of the primary contact person. Max-length [100] Variants: last_name_startswith and last_name_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "last_name" + }, + { + "name": "address_search", + "required": false, + "description": "Search contacts by address field. Use 'address_startswith' or 'address_contains'. Max-length 100.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by any of the address fields. Max-length [100] Variants: address_startswith and address_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "address" + }, + { + "name": "email_search_criteria", + "required": false, + "description": "Search contacts by email of the primary contact person. Use 'startswith' or 'contains' in the string to specify the search variant. Max length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by email of the primary contact person. Max-length [100] Variants: email_startswith and email_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "email" + }, + { + "name": "contact_phone_number", + "required": false, + "description": "Search contacts by primary contact's phone number. Supports 'startswith' and 'contains' variants. Max length of 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by phone number of the primary contact person. Max-length [100] Variants: phone_startswith and phone_contains" + }, + "inferrable": true, + "http_endpoint_parameter_name": "phone" + }, + { + "name": "contact_status_filter", + "required": false, + "description": "Filter contacts by status. Options include All, Active, Inactive, Duplicate, PortalEnabled, PortalDisabled, OverDue, Unpaid, CreditLimitExceed, and Crm.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter contacts by status. Allowed Values: Status.All, Status.Active, Status.Inactive, Status.Duplicate, Status.PortalEnabled, Status.PortalDisabled, Invoice.OverDue, Invoice.Unpaid, Status.CreditLimitExceed and Status.Crm" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_by" + }, + { + "name": "search_contacts_text", + "required": false, + "description": "Search contacts using contact name or notes. Maximum length is 100 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by contact name or notes. Max-length [100]" + }, + "inferrable": true, + "http_endpoint_parameter_name": "search_text" + }, + { + "name": "sort_by_column", + "required": false, + "description": "Specify the column to sort contacts by. Allowed values: contact_name, first_name, last_name, email, outstanding_receivable_amount, created_time, and last_modified_time.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort contacts. Allowed Values: contact_name, first_name, last_name, email, outstanding_receivable_amount, created_time and last_modified_time" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_column" + }, + { + "name": "crm_contact_id", + "required": false, + "description": "CRM Contact ID to filter specific contact details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "CRM Contact ID for the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "zcrm_contact_id" + }, + { + "name": "crm_account_id", + "required": false, + "description": "Specify the CRM Account ID for the contact to retrieve specific contact details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "CRM Account ID for the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "zcrm_account_id" + }, + { + "name": "crm_vendor_id", + "required": false, + "description": "The CRM Vendor ID associated with the contact, used to filter results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "CRM Vendor ID for the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "zcrm_vendor_id" + }, + { + "name": "page_number_to_fetch", + "required": false, + "description": "Specify the page number to be fetched. Defaults to 1 if not provided.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "records_per_page", + "required": false, + "description": "The number of contact records to fetch per page. Default is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'list_contacts'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_type", + "tool_parameter_name": "filter_contact_by_type", + "description": "Search contacts by contact type. Allowed Values: customer, vendor.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by contact type. Allowed Values: customer, vendor." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_name", + "tool_parameter_name": "contact_name_filter", + "description": "Search contacts by contact name. Max-length [100] Variants: contact_name_startswith and contact_name_contains. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by contact name. Max-length [100] Variants: contact_name_startswith and contact_name_contains. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "company_name", + "tool_parameter_name": "search_by_company_name", + "description": "Search contacts by company name. Max-length [100] Variants: company_name_startswith and company_name_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by company name. Max-length [100] Variants: company_name_startswith and company_name_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "first_name", + "tool_parameter_name": "primary_contact_first_name", + "description": "Search contacts by first name of the primary contact person. Max-length [100] Variants: first_name_startswith and first_name_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by first name of the primary contact person. Max-length [100] Variants: first_name_startswith and first_name_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "last_name", + "tool_parameter_name": "search_by_last_name", + "description": "Search contacts by last name of the primary contact person. Max-length [100] Variants: last_name_startswith and last_name_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by last name of the primary contact person. Max-length [100] Variants: last_name_startswith and last_name_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "address", + "tool_parameter_name": "address_search", + "description": "Search contacts by any of the address fields. Max-length [100] Variants: address_startswith and address_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by any of the address fields. Max-length [100] Variants: address_startswith and address_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "email", + "tool_parameter_name": "email_search_criteria", + "description": "Search contacts by email of the primary contact person. Max-length [100] Variants: email_startswith and email_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by email of the primary contact person. Max-length [100] Variants: email_startswith and email_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "phone", + "tool_parameter_name": "contact_phone_number", + "description": "Search contacts by phone number of the primary contact person. Max-length [100] Variants: phone_startswith and phone_contains", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by phone number of the primary contact person. Max-length [100] Variants: phone_startswith and phone_contains" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter_by", + "tool_parameter_name": "contact_status_filter", + "description": "Filter contacts by status. Allowed Values: Status.All, Status.Active, Status.Inactive, Status.Duplicate, Status.PortalEnabled, Status.PortalDisabled, Invoice.OverDue, Invoice.Unpaid, Status.CreditLimitExceed and Status.Crm", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter contacts by status. Allowed Values: Status.All, Status.Active, Status.Inactive, Status.Duplicate, Status.PortalEnabled, Status.PortalDisabled, Invoice.OverDue, Invoice.Unpaid, Status.CreditLimitExceed and Status.Crm" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "search_text", + "tool_parameter_name": "search_contacts_text", + "description": "Search contacts by contact name or notes. Max-length [100]", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search contacts by contact name or notes. Max-length [100]" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_column", + "tool_parameter_name": "sort_by_column", + "description": "Sort contacts. Allowed Values: contact_name, first_name, last_name, email, outstanding_receivable_amount, created_time and last_modified_time", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort contacts. Allowed Values: contact_name, first_name, last_name, email, outstanding_receivable_amount, created_time and last_modified_time" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "zcrm_contact_id", + "tool_parameter_name": "crm_contact_id", + "description": "CRM Contact ID for the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "CRM Contact ID for the contact." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "zcrm_account_id", + "tool_parameter_name": "crm_account_id", + "description": "CRM Account ID for the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "CRM Account ID for the contact." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "zcrm_vendor_id", + "tool_parameter_name": "crm_vendor_id", + "description": "CRM Vendor ID for the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "CRM Vendor ID for the contact." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number_to_fetch", + "description": "Page number to be fetched. Default value is 1.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number to be fetched. Default value is 1." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "records_per_page", + "description": "Number of records to be fetched per page. Default value is 200.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of records to be fetched per page. Default value is 200." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 200, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveCreditNoteEmailHistory.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveCreditNoteEmailHistory.json new file mode 100644 index 00000000..9bb4a975 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveCreditNoteEmailHistory.json @@ -0,0 +1,154 @@ +{ + "name": "RetrieveCreditNoteEmailHistory", + "fully_qualified_name": "ZohoBooksApi.RetrieveCreditNoteEmailHistory@0.1.0", + "description": "Retrieve the email history of a specific credit note.\n\nUse this tool to get detailed information about the email interactions associated with a specific credit note. Useful for tracking communication history.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which you want to retrieve the credit note email history.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to retrieve its email history.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_credit_note_email_history'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/emailhistory", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveEstimateDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveEstimateDetails.json new file mode 100644 index 00000000..d25a4d8d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveEstimateDetails.json @@ -0,0 +1,220 @@ +{ + "name": "RetrieveEstimateDetails", + "fully_qualified_name": "ZohoBooksApi.RetrieveEstimateDetails@0.1.0", + "description": "Retrieve the details of a specific estimate.\n\nUse this tool to get information about a particular estimate by providing its ID. It returns the details associated with the specified estimate in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. Required to retrieve estimate details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_id", + "required": true, + "description": "Unique identifier of the specific estimate to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "response_format", + "required": false, + "description": "Specify the format for the estimate details: json, pdf, or html. Default is json.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular estimate in formats such as json/ pdf/ html. Default format is json.Allowed Values: json, pdf and html" + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + }, + { + "name": "print_pdf", + "required": false, + "description": "Set to true to print the exported PDF of the estimate.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_estimate'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "print_pdf", + "description": "Print the exported pdf.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "response_format", + "description": "Get the details of a particular estimate in formats such as json/ pdf/ html. Default format is json.Allowed Values: json, pdf and html", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular estimate in formats such as json/ pdf/ html. Default format is json.Allowed Values: json, pdf and html" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_id", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveExpenseReceipt.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveExpenseReceipt.json new file mode 100644 index 00000000..b003e778 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveExpenseReceipt.json @@ -0,0 +1,187 @@ +{ + "name": "RetrieveExpenseReceipt", + "fully_qualified_name": "ZohoBooksApi.RetrieveExpenseReceipt@0.1.0", + "description": "Retrieve the receipt attached to an expense.\n\nUse this tool to obtain the receipt attached to a specific expense entry in Zoho Books. It is useful for reviewing or auditing expense details by accessing the actual receipt document.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to retrieve the expense receipt.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "expense_identifier", + "required": true, + "description": "Unique identifier for the expense to retrieve its receipt. Required for locating the specific expense in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "expense_id" + }, + { + "name": "get_receipt_thumbnail", + "required": false, + "description": "Set to true to get a thumbnail of the receipt; false returns the full receipt.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the thumbnail of the receipt." + }, + "inferrable": true, + "http_endpoint_parameter_name": "preview" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_expense_receipt'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses/{expense_id}/receipt", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "preview", + "tool_parameter_name": "get_receipt_thumbnail", + "description": "Get the thumbnail of the receipt.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the thumbnail of the receipt." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "expense_id", + "tool_parameter_name": "expense_identifier", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveInvoiceDocument.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveInvoiceDocument.json new file mode 100644 index 00000000..0eef4d71 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveInvoiceDocument.json @@ -0,0 +1,220 @@ +{ + "name": "RetrieveInvoiceDocument", + "fully_qualified_name": "ZohoBooksApi.RetrieveInvoiceDocument@0.1.0", + "description": "Retrieve a document attached to a specific invoice.\n\nUse this tool to access and download a document linked to an invoice by specifying the invoice and document IDs.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to retrieve the document from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_id", + "required": true, + "description": "The unique identifier for the invoice to which the document is attached. Required to retrieve the document.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "invoice_document_id", + "required": true, + "description": "Unique identifier for the specific document attached to the invoice. Required to retrieve the exact document.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "document_id" + }, + { + "name": "response_format", + "required": false, + "description": "Specify the desired format for the response, such as json, pdf, or html.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the response format (e.g., json, pdf, html)" + }, + "inferrable": true, + "http_endpoint_parameter_name": "responseformat" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_invoice_document_details'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/documents/{document_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "responseformat", + "tool_parameter_name": "response_format", + "description": "Specify the response format (e.g., json, pdf, html)", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the response format (e.g., json, pdf, html)" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_id", + "description": "", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "document_id", + "tool_parameter_name": "invoice_document_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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveItemDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveItemDetails.json new file mode 100644 index 00000000..94def7b1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveItemDetails.json @@ -0,0 +1,154 @@ +{ + "name": "RetrieveItemDetails", + "fully_qualified_name": "ZohoBooksApi.RetrieveItemDetails@0.1.0", + "description": "Retrieve details of a specific item in Zoho Books.\n\nUse this tool to get detailed information about a specific item in Zoho Books by providing the item ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose item details are being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "item_unique_identifier", + "required": true, + "description": "Unique identifier for the item to retrieve details from Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_item'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/items/{item_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "item_unique_identifier", + "description": "Unique identifier of the item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrievePurchaseOrderAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrievePurchaseOrderAttachment.json new file mode 100644 index 00000000..ae2e024d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrievePurchaseOrderAttachment.json @@ -0,0 +1,187 @@ +{ + "name": "RetrievePurchaseOrderAttachment", + "fully_qualified_name": "ZohoBooksApi.RetrievePurchaseOrderAttachment@0.1.0", + "description": "Retrieve the file attached to a specific purchase order.\n\nUse this tool to obtain the file attachment from a specific purchase order by providing the purchase order ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID representing the organization. Required to specify which organization's purchase order to access.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "The unique identifier of the purchase order to retrieve the attachment for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "get_thumbnail", + "required": false, + "description": "Set to true to get the thumbnail of the attachment, or false to retrieve the full file.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the thumbnail of the attachment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "preview" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_purchase_order_attachment'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/attachment", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "preview", + "tool_parameter_name": "get_thumbnail", + "description": "Get the thumbnail of the attachment.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the thumbnail of the attachment." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrievePurchaseOrderDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrievePurchaseOrderDetails.json new file mode 100644 index 00000000..b6902316 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrievePurchaseOrderDetails.json @@ -0,0 +1,220 @@ +{ + "name": "RetrievePurchaseOrderDetails", + "fully_qualified_name": "ZohoBooksApi.RetrievePurchaseOrderDetails@0.1.0", + "description": "Retrieve the details of a purchase order.\n\nUse this tool to get detailed information about a specific purchase order by providing the purchase order ID. Ideal for retrieving purchase order data for review or processing.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "Unique ID of the organization to retrieve purchase order details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "Provide the unique identifier of the purchase order to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchase_order_id" + }, + { + "name": "response_format", + "required": false, + "description": "Specifies the format of the purchase order details. Options: json, pdf, html. Default is json.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular purchase order in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, pdf and html." + }, + "inferrable": true, + "http_endpoint_parameter_name": "accept" + }, + { + "name": "print_pdf", + "required": false, + "description": "Set to True to print the exported PDF of the purchase order.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "print" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_purchase_order'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchase_order_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "print", + "tool_parameter_name": "print_pdf", + "description": "Print the exported pdf.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Print the exported pdf." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "accept", + "tool_parameter_name": "response_format", + "description": "Get the details of a particular purchase order in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, pdf and html.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the details of a particular purchase order in formats such as json/ pdf/ html. Default format is json. Allowed Values: json, pdf and html." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchase_order_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveRetainerInvoiceEmailContent.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveRetainerInvoiceEmailContent.json new file mode 100644 index 00000000..9c899838 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveRetainerInvoiceEmailContent.json @@ -0,0 +1,154 @@ +{ + "name": "RetrieveRetainerInvoiceEmailContent", + "fully_qualified_name": "ZohoBooksApi.RetrieveRetainerInvoiceEmailContent@0.1.0", + "description": "Retrieve the email content of a retainer invoice.\n\nThis tool fetches the email content of a specific retainer invoice using the provided invoice ID. It should be called when you need to view or send the email details of a retainer invoice.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization. Required to access retainer invoice emails.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice. Used to fetch the specific email content.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_retainer_invoice_email'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/email", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveTaxGroupDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveTaxGroupDetails.json new file mode 100644 index 00000000..e0dc16d4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveTaxGroupDetails.json @@ -0,0 +1,154 @@ +{ + "name": "RetrieveTaxGroupDetails", + "fully_qualified_name": "ZohoBooksApi.RetrieveTaxGroupDetails@0.1.0", + "description": "Retrieve details of a specific tax group.\n\nUse this to obtain information about a specific tax group by its ID in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books to get the tax group details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_group_identifier", + "required": true, + "description": "Unique identifier for the tax group in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax group." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_group_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_tax_group'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxgroups/{tax_group_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_group_id", + "tool_parameter_name": "tax_group_identifier", + "description": "Unique identifier of the tax group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax group." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveUnusedRetainerPayments.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveUnusedRetainerPayments.json new file mode 100644 index 00000000..96693071 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/RetrieveUnusedRetainerPayments.json @@ -0,0 +1,187 @@ +{ + "name": "RetrieveUnusedRetainerPayments", + "fully_qualified_name": "ZohoBooksApi.RetrieveUnusedRetainerPayments@0.1.0", + "description": "Retrieve unused retainer payments for a contact.\n\nFetch details of unused retainer payments associated with a specific contact, providing insight into available credit balances.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization to filter retainer payments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_id", + "required": true, + "description": "The unique identifier for the contact whose unused retainer payments are being retrieved. This is required to specify which contact's data you want 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": "contact_id" + }, + { + "name": "filter_by_currency_id", + "required": false, + "description": "Currency ID to filter unused retainer payments by a specific currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency ID to filter unused retainer payments by specific currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'get_unused_retainer_payments'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/receivables/unusedretainerpayments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "filter_by_currency_id", + "description": "Currency ID to filter unused retainer payments by specific currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency ID to filter unused retainer payments by specific currency." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_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_books_api/arcade_zoho_books_api/wrapper_tools/SellFixedAsset.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SellFixedAsset.json new file mode 100644 index 00000000..c7279972 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SellFixedAsset.json @@ -0,0 +1,253 @@ +{ + "name": "SellFixedAsset", + "fully_qualified_name": "ZohoBooksApi.SellFixedAsset@0.1.0", + "description": "Initiate the sale of a specified fixed asset.\n\nUse this tool to sell a specific fixed asset by providing its asset ID. It should be called when confirming or completing the sale process of a fixed asset in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier of the fixed asset to be sold.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + }, + { + "name": "asset_sale_details", + "required": false, + "description": "JSON object containing details of the asset sale, including expense account ID, invoice ID, line item ID, and reason for selling.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the invoice id associated with selling the fixed asset." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the line item id that is associated with the fixed asset account." + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the reason for selling the fixed asset" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'sell_fixed_asset'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/sell", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "asset_sale_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the invoice id associated with selling the fixed asset." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the line item id that is associated with the fixed asset account." + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the reason for selling the fixed asset" + } + }, + "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 \"required\": [\n \"invoice_id\",\n \"line_item_id\",\n \"reason\",\n \"expense_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"expense_account_id\": {\n \"description\": \"Enter the account id to track the expenses associated with the asset\\u2019s depreciation.The available account types are Expense and Other Expense\",\n \"type\": \"string\",\n \"example\": \"3640355000000000421\"\n },\n \"invoice_id\": {\n \"type\": \"string\",\n \"description\": \"Enter the invoice id associated with selling the fixed asset.\",\n \"example\": \"3640355000000319008\"\n },\n \"line_item_id\": {\n \"type\": \"string\",\n \"description\": \"Enter the line item id that is associated with the fixed asset account.\",\n \"example\": \"3640355000000319008\"\n },\n \"reason\": {\n \"type\": \"string\",\n \"description\": \"Enter the reason for selling the fixed asset\",\n \"example\": \"Asset is no longer required\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendEmailToContact.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendEmailToContact.json new file mode 100644 index 00000000..252f7ae5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendEmailToContact.json @@ -0,0 +1,286 @@ +{ + "name": "SendEmailToContact", + "fully_qualified_name": "ZohoBooksApi.SendEmailToContact@0.1.0", + "description": "Send an email directly to a specified contact.\n\nUse this tool to send an email to a contact by specifying their contact ID. Ideal for communicating directly with contacts via email.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization to which the contact belongs. It is required for sending the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_id", + "required": true, + "description": "Unique identifier for the contact to send the email to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "email_content", + "required": false, + "description": "JSON object containing `to_mail_ids`, `subject`, `body`, and optional `attachments` for the email.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of an email has to be sent. Max-length [1000]" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of an email has to be sent. Max-length [5000]" + }, + "attachments": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email. It has to be sent in multipart/formdata" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "send_customer_statement_with_email", + "required": false, + "description": "Indicate if a customer statement PDF should be sent with the email. Use 'true' to send, 'false' otherwise.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send customer statement pdf with email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send_customer_statement" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_contact'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send_customer_statement", + "tool_parameter_name": "send_customer_statement_with_email", + "description": "Send customer statement pdf with email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send customer statement pdf with email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_id", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "email_content", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of an email has to be sent. Max-length [1000]" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of an email has to be sent. Max-length [5000]" + }, + "attachments": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email. It has to be sent in multipart/formdata" + } + }, + "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 \"required\": [\n \"to_mail_ids\",\n \"subject\",\n \"body\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"to_mail_ids\": {\n \"description\": \"Array of email address of the recipients.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"willsmith@bowmanfurniture.com\"\n ]\n },\n \"subject\": {\n \"description\": \"Subject of an email has to be sent. Max-length [1000]\",\n \"type\": \"string\",\n \"example\": \"Welcome to Zillium Inc .\"\n },\n \"body\": {\n \"description\": \"Body of an email has to be sent. Max-length [5000]\",\n \"type\": \"string\",\n \"example\": \"Dear Customer,
We have attached with this email a list of all your transactions with us for the period 01 Sep 2013 to 30 Sep 2013. You can write to us or call us if you need any assistance or clarifications.
Thanks for your business.
Regards
Zillium Inc\"\n },\n \"attachments\": {\n \"description\": \"Files to be attached to the email. It has to be sent in multipart/formdata\",\n \"type\": \"string\",\n \"format\": \"binary\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendEstimateEmail.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendEstimateEmail.json new file mode 100644 index 00000000..1ed268e1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendEstimateEmail.json @@ -0,0 +1,318 @@ +{ + "name": "SendEstimateEmail", + "fully_qualified_name": "ZohoBooksApi.SendEstimateEmail@0.1.0", + "description": "Send an email estimate to a customer.\n\nUse this tool to email an estimate to a customer. If no specific content is provided, the default email content will be used.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization. This ID is required to send an estimate email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier of the estimate to be emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "email_attachments", + "required": false, + "description": "Files to be attached to the email estimate. Provide file paths or URLs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachments" + }, + { + "name": "email_content", + "required": false, + "description": "JSON string including email details like sender, recipients, subject, body, and document IDs.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of an email has to be sent." + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of an email has to be sent." + }, + "mail_documents": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of Documents ids, which is attached into email" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_estimate'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachments", + "tool_parameter_name": "email_attachments", + "description": "Files to be attached to the email", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "email_content", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of an email has to be sent." + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of an email has to be sent." + }, + "mail_documents": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of Documents ids, which is attached into email" + } + }, + "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 \"required\": [\n \"to_mail_ids\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"send_from_org_email_id\": {\n \"description\": \"Boolean to trigger the email from the organization's email address\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"to_mail_ids\": {\n \"description\": \"Array of email address of the recipients.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"willsmith@bowmanfurniture.com\"\n ]\n },\n \"cc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be cced.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"peterparker@bowmanfurniture.com\"\n ]\n },\n \"subject\": {\n \"description\": \"Subject of an email has to be sent.\",\n \"type\": \"string\",\n \"example\": \"Statement of transactions with Zillium Inc\"\n },\n \"body\": {\n \"description\": \"Body of an email has to be sent.\",\n \"type\": \"string\",\n \"example\": \"Dear Customer, Thanks for your business enquiry. The estimate EST-000002 is attached with this email. We can get started if you send us your consent. For any assistance you can reach us via email or phone. Looking forward to hearing back from you. Here's an overview of the estimate for your reference. Estimate Overview: Estimate : EST-000002 Date : 03 Oct 2013 Amount : $36.47 Regards
\\\\nZillium Inc
\\\\n\\\"\\\"\"\n },\n \"mail_documents\": {\n \"description\": \"Array of Documents ids, which is attached into email\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"982000000000121\"\n ]\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendEstimatesEmail.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendEstimatesEmail.json new file mode 100644 index 00000000..07ee4d81 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendEstimatesEmail.json @@ -0,0 +1,154 @@ +{ + "name": "SendEstimatesEmail", + "fully_qualified_name": "ZohoBooksApi.SendEstimatesEmail@0.1.0", + "description": "Send multiple estimates to customers via email.\n\nUse this tool to email up to 10 estimates to your customers efficiently. Ideal for managing and sharing multiple estimates at once.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_ids_to_email", + "required": true, + "description": "Comma-separated string of up to 10 estimate IDs to send via email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated estimate ids which are to be emailed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_ids" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_multiple_estimates'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_ids", + "tool_parameter_name": "estimate_ids_to_email", + "description": "Comma separated estimate ids which are to be emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated estimate ids which are to be emailed." + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/SendInvitationEmail.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendInvitationEmail.json new file mode 100644 index 00000000..6d3048ac --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendInvitationEmail.json @@ -0,0 +1,154 @@ +{ + "name": "SendInvitationEmail", + "fully_qualified_name": "ZohoBooksApi.SendInvitationEmail@0.1.0", + "description": "Send an invitation email to a user in Zoho Books.\n\nUse this tool to send an invitation email to a specific user by their user ID in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books required to send the invitation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "user_unique_identifier", + "required": true, + "description": "Unique identifier of the user to whom the invitation email will be sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'invite_user'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/users/{user_id}/invite", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_unique_identifier", + "description": "Unique identifier of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SendInvoiceEmail.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendInvoiceEmail.json new file mode 100644 index 00000000..f981c82c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendInvoiceEmail.json @@ -0,0 +1,384 @@ +{ + "name": "SendInvoiceEmail", + "fully_qualified_name": "ZohoBooksApi.SendInvoiceEmail@0.1.0", + "description": "Email an invoice to a customer with optional content customization.\n\nThis tool is used to email an invoice to a customer. It can be called when there's a need to send invoice details via email, optionally allowing custom content. If no custom content is provided, default mail content will be used.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization to which the invoice is linked. This ID is required to specify which organization's invoice is being emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique string identifier for the specific invoice to be emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "invoice_email_attachments", + "required": false, + "description": "A comma-separated list of file paths to attach to the email. Provide file paths if additional files need to be included with the invoice email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachments" + }, + { + "name": "custom_email_content", + "required": false, + "description": "JSON string for custom email content including sender information, recipients, subject, and body.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "from_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "From email address id" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject of the mail" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The body of the mail" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "send_customer_statement", + "required": false, + "description": "Set to 'True' to send the customer statement PDF with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send customer statement pdf a with email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send_customer_statement" + }, + { + "name": "send_invoice_attachment", + "required": false, + "description": "Set to true to attach the invoice with the email; false to exclude it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the invoice attachment a with the email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send_attachment" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send_customer_statement", + "tool_parameter_name": "send_customer_statement", + "description": "Send customer statement pdf a with email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send customer statement pdf a with email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send_attachment", + "tool_parameter_name": "send_invoice_attachment", + "description": "Send the invoice attachment a with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the invoice attachment a with the email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachments", + "tool_parameter_name": "invoice_email_attachments", + "description": "Files to be attached to the email", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_email_content", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "from_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "From email address id" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject of the mail" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The body of the mail" + } + }, + "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 \"required\": [\n \"to_mail_ids\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"send_from_org_email_id\": {\n \"description\": \"Boolean to trigger the email from the organization's email address\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"from_address_id\": {\n \"description\": \"From email address id\",\n \"type\": \"string\",\n \"example\": 2000000011993\n },\n \"to_mail_ids\": {\n \"description\": \"Array of email address of the recipients.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"willsmith@bowmanfurniture.com\"\n ]\n },\n \"cc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be cced.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"peterparker@bowmanfurniture.com\"\n ]\n },\n \"subject\": {\n \"description\": \"The subject of the mail\",\n \"type\": \"string\",\n \"example\": \"Invoice from Zillium Inc (Invoice#: INV-00001)\"\n },\n \"body\": {\n \"description\": \"The body of the mail\",\n \"type\": \"string\",\n \"example\": \"Dear Customer,



Thanks for your business.



The invoice INV-00001 is attached with this email. You can choose the easy way out and pay online for this invoice.

Here's an overview of the invoice for your reference.



Invoice Overview:

Invoice : INV-00001

Date : 05 Aug 2013

Amount : $541.82



It was great working with you. Looking forward to working with you again.


\\\\nRegards
\\\\nZillium Inc
\\\\n\\\",\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendInvoiceReminders.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendInvoiceReminders.json new file mode 100644 index 00000000..c33ef168 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendInvoiceReminders.json @@ -0,0 +1,154 @@ +{ + "name": "SendInvoiceReminders", + "fully_qualified_name": "ZohoBooksApi.SendInvoiceReminders@0.1.0", + "description": "Send email reminders for unpaid invoices.\n\nUse this tool to remind customers about unpaid invoices by email. It sends reminder emails only for open or overdue invoices, with a maximum of 10 invoices at a time.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "Provide the ID of the organization for which the invoice reminders are to be sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_ids", + "required": true, + "description": "List of invoice IDs to send reminders for. Only for open or overdue invoices, up to 10 at once.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of invoice ids for which the reminder has to be sent." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_ids" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_invoice_reminder'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/paymentreminder", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_ids", + "tool_parameter_name": "invoice_ids", + "description": "Array of invoice ids for which the reminder has to be sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of invoice ids for which the reminder has to be sent." + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/SendInvoicesEmail.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendInvoicesEmail.json new file mode 100644 index 00000000..3064ba7b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendInvoicesEmail.json @@ -0,0 +1,255 @@ +{ + "name": "SendInvoicesEmail", + "fully_qualified_name": "ZohoBooksApi.SendInvoicesEmail@0.1.0", + "description": "Send up to 10 invoices by email to customers.\n\nThis tool is used to email invoices to your customers, allowing you to send up to 10 invoices in a single request.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The organization ID for which invoices will be emailed. Required for sending emails.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "comma_separated_invoice_ids", + "required": true, + "description": "Comma separated list of invoice IDs to be emailed. Maximum 10 IDs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated invoice ids which are to be emailed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_ids" + }, + { + "name": "invoice_contact_details", + "required": false, + "description": "JSON object with contacts array, each having contact_id, and preferences for email or snail mail.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contacts": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer and mail will be sent to invoice associated contact persons" + }, + "email": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "the boolean check for Email" + }, + "snail_mail": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "the boolean check for snail mail" + } + }, + "description": "Contacts for whom email or snail mail has to be sent." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_invoices'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_ids", + "tool_parameter_name": "comma_separated_invoice_ids", + "description": "Comma separated invoice ids which are to be emailed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated invoice ids which are to be emailed." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_contact_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contacts": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer and mail will be sent to invoice associated contact persons" + }, + "email": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "the boolean check for Email" + }, + "snail_mail": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "the boolean check for snail mail" + } + }, + "description": "Contacts for whom email or snail mail has to be sent." + } + }, + "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 \"required\": [\n \"contact_id\",\n \"email\",\n \"snail_mail\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"contacts\": {\n \"description\": \"Contacts for whom email or snail mail has to be sent.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_id\": {\n \"description\": \"ID of the Customer and mail will be sent to invoice associated contact persons\",\n \"type\": \"string\",\n \"example\": 460000000026049\n },\n \"email\": {\n \"description\": \"the boolean check for Email\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"snail_mail\": {\n \"description\": \"the boolean check for snail mail\",\n \"type\": \"boolean\",\n \"example\": false\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendPurchaseOrderEmail.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendPurchaseOrderEmail.json new file mode 100644 index 00000000..08c67bf8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendPurchaseOrderEmail.json @@ -0,0 +1,450 @@ +{ + "name": "SendPurchaseOrderEmail", + "fully_qualified_name": "ZohoBooksApi.SendPurchaseOrderEmail@0.1.0", + "description": "Send a purchase order email to the vendor.\n\nUse this tool to email a purchase order to the vendor. If no custom content is provided, the email will be sent with default content.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization the purchase order belongs to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "Unique identifier of the purchase order to be emailed to the vendor.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "email_attachments", + "required": false, + "description": "A comma-separated list of file paths or URLs to attach to the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The files to be attached with the email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachments" + }, + { + "name": "attachment_file_name", + "required": false, + "description": "The name of the file to attach to the email for the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + }, + "inferrable": true, + "http_endpoint_parameter_name": "file_name" + }, + { + "name": "email_custom_content", + "required": false, + "description": "Custom email details like subject, body, and recipient lists in a JSON format. This includes 'send_from_org_email_id', 'from_address_id', 'to_mail_ids', 'cc_mail_ids', 'bcc_mail_ids', 'subject', 'body', and 'mail_documents'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address." + }, + "from_address_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of From Address of the Email Address" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "bcc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be BCC ed." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of the mail." + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of the mail" + }, + "mail_documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system." + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "send_purchase_order_attachment", + "required": false, + "description": "Set to true to include the purchase order as an attachment with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the purchase order attachment a with the email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send_attachment" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_purchase_order'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachments", + "tool_parameter_name": "email_attachments", + "description": "The files to be attached with the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The files to be attached with the email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send_attachment", + "tool_parameter_name": "send_purchase_order_attachment", + "description": "Send the purchase order attachment a with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the purchase order attachment a with the email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "file_name", + "tool_parameter_name": "attachment_file_name", + "description": "Name of the file", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "email_custom_content", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address." + }, + "from_address_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of From Address of the Email Address" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be cced." + }, + "bcc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be BCC ed." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of the mail." + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of the mail" + }, + "mail_documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system." + } + }, + "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 \"required\": [\n \"to_mail_ids\",\n \"body\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"send_from_org_email_id\": {\n \"description\": \"Boolean to trigger the email from the organization's email address.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"from_address_id\": {\n \"description\": \"ID of From Address of the Email Address\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000008392548\"\n },\n \"to_mail_ids\": {\n \"description\": \"Array of email address of the recipients.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"willsmith@bowmanfurniture.com\"\n ]\n },\n \"cc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be cced.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"peterparker@bowmanfurniture.com\"\n ]\n },\n \"bcc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be BCC ed.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"mark@safInstruments.com\"\n ]\n },\n \"subject\": {\n \"description\": \"Subject of the mail.\",\n \"type\": \"string\",\n \"example\": \"Purchase Order from Zillium Inc (PO #: PO-00001)\"\n },\n \"body\": {\n \"description\": \"Body of the mail\",\n \"type\": \"string\",\n \"example\": \"Dear Bowman and Co,

The purchase order (PO-00001) is attached with this email.

An overview of the purchase order is available below:
Purchase Order # : PO-00001
Date : 10 Feb 2014
Amount : $112.00(in USD)

Please go through it and confirm the order. We look forward to working with you again



Regards

Zillium Inc

\"\n },\n \"mail_documents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"description\": \"ID of the Document\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"file_name\": {\n \"description\": \"Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendVendorPaymentEmail.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendVendorPaymentEmail.json new file mode 100644 index 00000000..f4f5090a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SendVendorPaymentEmail.json @@ -0,0 +1,400 @@ +{ + "name": "SendVendorPaymentEmail", + "fully_qualified_name": "ZohoBooksApi.SendVendorPaymentEmail@0.1.0", + "description": "Send a payment receipt email to a vendor.\n\nThis tool sends a vendor payment receipt to a vendor via email. You can customize the email content, attach files, and control sender preferences. If no customizations are provided, the email will use default templates.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the vendor payment email is being sent.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_payment_id", + "required": true, + "description": "Unique identifier for the vendor payment. Used to retrieve and send the corresponding payment receipt via email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "email_attachments", + "required": false, + "description": "List of file paths or URLs to attach to the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachments" + }, + { + "name": "attached_file_name", + "required": false, + "description": "Specify the name of the file to be attached to the email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file to be attached" + }, + "inferrable": true, + "http_endpoint_parameter_name": "file_name" + }, + { + "name": "email_customization", + "required": false, + "description": "JSON object to customize email content, such as sender info, recipients, subject, and body. Use default settings if none provided.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "from_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "From email address id" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be CC'd." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of the email" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of the email" + }, + "email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the vendor. If no template is associated with the vendor, then default template will be used." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "send_vendor_payment_attachment", + "required": false, + "description": "Set to true to include the vendor payment attachment in the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the vendor payment attachment with the email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "send_attachment" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'email_vendor_payment'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}/email", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "send_attachment", + "tool_parameter_name": "send_vendor_payment_attachment", + "description": "Send the vendor payment attachment with the email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Send the vendor payment attachment with the email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachments", + "tool_parameter_name": "email_attachments", + "description": "Files to be attached to the email", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Files to be attached to the email" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "file_name", + "tool_parameter_name": "attached_file_name", + "description": "Name of the file to be attached", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file to be attached" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "vendor_payment_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": "email_customization", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "send_from_org_email_id": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to trigger the email from the organization's email address" + }, + "from_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "From email address id" + }, + "to_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients." + }, + "cc_mail_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of email address of the recipients to be CC'd." + }, + "subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Subject of the email" + }, + "body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Body of the email" + }, + "email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the vendor. If no template is associated with the vendor, then default template will be used." + } + }, + "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 \"required\": [\n \"to_mail_ids\",\n \"subject\",\n \"body\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"send_from_org_email_id\": {\n \"description\": \"Boolean to trigger the email from the organization's email address\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"from_address_id\": {\n \"description\": \"From email address id\",\n \"type\": \"string\",\n \"example\": \"2000000011993\"\n },\n \"to_mail_ids\": {\n \"description\": \"Array of email address of the recipients.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"vendor@example.com\"\n ]\n },\n \"cc_mail_ids\": {\n \"description\": \"Array of email address of the recipients to be CC'd.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"manager@example.com\"\n ]\n },\n \"subject\": {\n \"description\": \"Subject of the email\",\n \"type\": \"string\",\n \"example\": \"Vendor Payment Receipt from Your Company (Payment#: VP-00001)\"\n },\n \"body\": {\n \"description\": \"Body of the email\",\n \"type\": \"string\",\n \"example\": \"Dear Vendor,

Thank you for your services.

Please find attached the payment receipt for Payment#: VP-00001.

Payment Details:
Payment Number: VP-00001
Date: 2024-01-15
Amount: $1,500.00

Best regards,
Your Company\"\n },\n \"email_template_id\": {\n \"description\": \"Get the email content based on a specific email template. If this param is not inputted, then the content will be based on the email template associated with the vendor. If no template is associated with the vendor, then default template will be used.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SetInvoiceAttachmentPreference.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SetInvoiceAttachmentPreference.json new file mode 100644 index 00000000..d02eac4f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SetInvoiceAttachmentPreference.json @@ -0,0 +1,187 @@ +{ + "name": "SetInvoiceAttachmentPreference", + "fully_qualified_name": "ZohoBooksApi.SetInvoiceAttachmentPreference@0.1.0", + "description": "Set the email attachment preference for an invoice.\n\nThis tool updates whether an attached file should be sent when emailing a specific invoice in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier for the specific invoice to update attachment preference.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "send_attachment_with_email", + "required": true, + "description": "Set to true to send the attachment with the invoice when emailed.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to send the attachment with the invoice when emailed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "can_send_in_mail" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_attachment_preference'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/attachment", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "can_send_in_mail", + "tool_parameter_name": "send_attachment_with_email", + "description": "Boolean to send the attachment with the invoice when emailed.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to send the attachment with the invoice when emailed." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SetPrimaryLocation.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SetPrimaryLocation.json new file mode 100644 index 00000000..969934ac --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SetPrimaryLocation.json @@ -0,0 +1,154 @@ +{ + "name": "SetPrimaryLocation", + "fully_qualified_name": "ZohoBooksApi.SetPrimaryLocation@0.1.0", + "description": "Marks a specified location as primary in Zoho Books.\n\nUse this tool to designate a specific location as the primary one in Zoho Books. This is useful for managing location preferences and ensuring the correct primary location is set.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which to set the primary location in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "location_identifier", + "required": true, + "description": "Unique identifier of the location to be marked as primary.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "inferrable": true, + "http_endpoint_parameter_name": "location_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_location_primary'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/locations/{location_id}/markasprimary", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "location_id", + "tool_parameter_name": "location_identifier", + "description": "Unique identifier of the location.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SetSalesOrderAttachmentPreference.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SetSalesOrderAttachmentPreference.json new file mode 100644 index 00000000..638d733e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SetSalesOrderAttachmentPreference.json @@ -0,0 +1,187 @@ +{ + "name": "SetSalesOrderAttachmentPreference", + "fully_qualified_name": "ZohoBooksApi.SetSalesOrderAttachmentPreference@0.1.0", + "description": "Sets attachment preference for sales order emails.\n\nUse this tool to set whether an attached file should be sent when emailing a sales order. Call this when you need to update the attachment settings on a specific sales order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which you want to update the attachment preference.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "allow_attachment_in_email", + "required": true, + "description": "Indicate if the file can be sent in the email. Set to true to allow, false to prevent.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Can the file be sent in mail." + }, + "inferrable": true, + "http_endpoint_parameter_name": "can_send_in_mail" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_attachment_preference1'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/attachment", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "can_send_in_mail", + "tool_parameter_name": "allow_attachment_in_email", + "description": "Can the file be sent in mail.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Can the file be sent in mail." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/StartTimeTracking.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StartTimeTracking.json new file mode 100644 index 00000000..57ec2ba6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StartTimeTracking.json @@ -0,0 +1,154 @@ +{ + "name": "StartTimeTracking", + "fully_qualified_name": "ZohoBooksApi.StartTimeTracking@0.1.0", + "description": "Initiate time tracking for a specific entry.\n\nUse this tool to start tracking time for a given time entry in Zoho Books. It should be called when you need to begin or resume tracking time on a project task.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization for which the time tracking is to be started.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "time_entry_identifier", + "required": true, + "description": "Unique identifier for the specific time entry to be tracked.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the time entry." + }, + "inferrable": true, + "http_endpoint_parameter_name": "time_entry_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'start_entry_timer'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/timeentries/{time_entry_id}/timer/start", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "time_entry_id", + "tool_parameter_name": "time_entry_identifier", + "description": "Unique identifier of the time entry.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the time entry." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/Stop1099TrackingForVendor.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/Stop1099TrackingForVendor.json new file mode 100644 index 00000000..069f0cfa --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/Stop1099TrackingForVendor.json @@ -0,0 +1,154 @@ +{ + "name": "Stop1099TrackingForVendor", + "fully_qualified_name": "ZohoBooksApi.Stop1099TrackingForVendor@0.1.0", + "description": "Stop 1099 payment tracking for a vendor in the U.S.\n\nUse to disable 1099 reporting for vendor payments in the U.S. organization.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization where 1099 tracking will be stopped.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_contact_id", + "required": true, + "description": "Unique identifier of the vendor contact to stop 1099 tracking.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'untrack_contact_1099'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/untrack1099", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "vendor_contact_id", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/StopRecurringBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StopRecurringBill.json new file mode 100644 index 00000000..d9a28e41 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StopRecurringBill.json @@ -0,0 +1,154 @@ +{ + "name": "StopRecurringBill", + "fully_qualified_name": "ZohoBooksApi.StopRecurringBill@0.1.0", + "description": "Stop an active recurring bill in Zoho Books.\n\nUse this tool to stop an active recurring bill in Zoho Books when you need to discontinue ongoing payments. It provides confirmation upon successful stoppage.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID representing the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_bill_identifier", + "required": true, + "description": "Unique identifier for the recurring bill to be stopped.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'stop_recurring_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringbills/{recurring_bill_id}/status/stop", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_bill_id", + "tool_parameter_name": "recurring_bill_identifier", + "description": "Unique identifier of the recurring bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/StopRecurringExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StopRecurringExpense.json new file mode 100644 index 00000000..373d3d7f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StopRecurringExpense.json @@ -0,0 +1,154 @@ +{ + "name": "StopRecurringExpense", + "fully_qualified_name": "ZohoBooksApi.StopRecurringExpense@0.1.0", + "description": "Stop an active recurring expense in Zoho Books.\n\nThis tool is used to stop an active recurring expense in Zoho Books. It should be called when a user wants to terminate a recurring payment schedule associated with an expense.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which the recurring expense will be stopped.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_expense_identifier", + "required": true, + "description": "Unique identifier for the recurring expense to be stopped.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_expense_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'stop_recurring_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses/{recurring_expense_id}/status/stop", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_expense_id", + "tool_parameter_name": "recurring_expense_identifier", + "description": "Unique identifier of the recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring expense." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/StopRecurringInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StopRecurringInvoice.json new file mode 100644 index 00000000..0f3304bf --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StopRecurringInvoice.json @@ -0,0 +1,205 @@ +{ + "name": "StopRecurringInvoice", + "fully_qualified_name": "ZohoBooksApi.StopRecurringInvoice@0.1.0", + "description": "Stop an active recurring invoice in Zoho Books.\n\nUse this tool to stop an active recurring invoice by providing the recurring invoice ID. This tool is useful for managing billing cycles when you need to halt a recurring charge.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization for which the recurring invoice is to be stopped.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_invoice_id", + "required": true, + "description": "The unique identifier for the recurring invoice to be stopped.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_invoice_id" + }, + { + "name": "recurring_invoice_details", + "required": false, + "description": "A JSON object containing details like the unique ID of the recurring invoice to be stopped.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice generated by the server." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'stop_recurring_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}/status/stop", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_invoice_id", + "tool_parameter_name": "recurring_invoice_id", + "description": "Unique identifier of the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "recurring_invoice_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice generated by the server." + } + }, + "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 \"recurring_invoice_id\": {\n \"description\": \"Unique ID of the recurring invoice generated by the server.\",\n \"type\": \"string\",\n \"example\": \"90300000072369\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StopTimeTracking.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StopTimeTracking.json new file mode 100644 index 00000000..3de85f47 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/StopTimeTracking.json @@ -0,0 +1,121 @@ +{ + "name": "StopTimeTracking", + "fully_qualified_name": "ZohoBooksApi.StopTimeTracking@0.1.0", + "description": "Stop the timer for a time entry.\n\nUse this tool to stop tracking time for a specific task or activity, such as when taking a break or ending a work session.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization where the time entry is being stopped. This ID is required to specify which organization's time tracking should be affected.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'stop_entry_timer'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/timeentries/timer/stop", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "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_books_api/arcade_zoho_books_api/wrapper_tools/SubmitBillForApproval.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitBillForApproval.json new file mode 100644 index 00000000..14d13703 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitBillForApproval.json @@ -0,0 +1,154 @@ +{ + "name": "SubmitBillForApproval", + "fully_qualified_name": "ZohoBooksApi.SubmitBillForApproval@0.1.0", + "description": "Submit a bill for approval in Zoho Books.\n\nUse this tool to submit a specific bill for approval in Zoho Books by providing the bill ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books for which the bill is being submitted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier of the bill to be submitted for approval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/submit", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SubmitCreditNoteForApproval.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitCreditNoteForApproval.json new file mode 100644 index 00000000..592bd27b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitCreditNoteForApproval.json @@ -0,0 +1,154 @@ +{ + "name": "SubmitCreditNoteForApproval", + "fully_qualified_name": "ZohoBooksApi.SubmitCreditNoteForApproval@0.1.0", + "description": "Submit a credit note for approval in Zoho Books.\n\nCall this tool to submit a credit note for approval in Zoho Books using the credit note ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization for which the credit note is being submitted for approval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to submit for approval in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit_credit_note'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/submit", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SubmitEstimateForApproval.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitEstimateForApproval.json new file mode 100644 index 00000000..54cc06bd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitEstimateForApproval.json @@ -0,0 +1,154 @@ +{ + "name": "SubmitEstimateForApproval", + "fully_qualified_name": "ZohoBooksApi.SubmitEstimateForApproval@0.1.0", + "description": "Submit an estimate for approval.\n\nUse this tool to submit a specific estimate for approval by providing the estimate ID. It facilitates the approval workflow for estimates in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books that the estimate belongs to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier of the estimate to be submitted for approval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit_estimate'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/submit", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SubmitInvoiceForApproval.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitInvoiceForApproval.json new file mode 100644 index 00000000..f04ac6bb --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitInvoiceForApproval.json @@ -0,0 +1,154 @@ +{ + "name": "SubmitInvoiceForApproval", + "fully_qualified_name": "ZohoBooksApi.SubmitInvoiceForApproval@0.1.0", + "description": "Submit an invoice for approval in Zoho Books.\n\nThis tool allows users to submit an invoice for approval using the Zoho Books API. It should be called when an invoice is ready to be reviewed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_unique_id", + "required": true, + "description": "The unique identifier for the invoice to be submitted for approval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/submit", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_unique_id", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SubmitPurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitPurchaseOrder.json new file mode 100644 index 00000000..91a07efc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitPurchaseOrder.json @@ -0,0 +1,154 @@ +{ + "name": "SubmitPurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.SubmitPurchaseOrder@0.1.0", + "description": "Submit a purchase order for approval.\n\nUse this tool to submit a specific purchase order for approval in the Zoho Books system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "Unique identifier of the purchase order to be submitted for approval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit_purchase_order'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/submit", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SubmitRetainerInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitRetainerInvoice.json new file mode 100644 index 00000000..29aab245 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitRetainerInvoice.json @@ -0,0 +1,154 @@ +{ + "name": "SubmitRetainerInvoice", + "fully_qualified_name": "ZohoBooksApi.SubmitRetainerInvoice@0.1.0", + "description": "Submit a retainer invoice for approval in Zoho Books.\n\nUse this tool to submit a specific retainer invoice for approval in Zoho Books. Call this tool when you need to send a retainer invoice for review and approval.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books to which the retainer invoice belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_unique_id", + "required": true, + "description": "Unique identifier of the retainer invoice for submission.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "reatinerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit_retainer_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{reatinerinvoice_id}/submit", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "reatinerinvoice_id", + "tool_parameter_name": "retainer_invoice_unique_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SubmitSalesOrderForApproval.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitSalesOrderForApproval.json new file mode 100644 index 00000000..1c642feb --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitSalesOrderForApproval.json @@ -0,0 +1,154 @@ +{ + "name": "SubmitSalesOrderForApproval", + "fully_qualified_name": "ZohoBooksApi.SubmitSalesOrderForApproval@0.1.0", + "description": "Submit a sales order for approval in Zoho Books.\n\nUse this tool to submit a sales order for approval in the Zoho Books system by providing the sales order ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books where the sales order is submitted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to be submitted for approval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit_sales_order'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/submit", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/SubmitVendorCreditForApproval.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitVendorCreditForApproval.json new file mode 100644 index 00000000..840761e7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/SubmitVendorCreditForApproval.json @@ -0,0 +1,154 @@ +{ + "name": "SubmitVendorCreditForApproval", + "fully_qualified_name": "ZohoBooksApi.SubmitVendorCreditForApproval@0.1.0", + "description": "Submit a vendor credit for approval.\n\nThis tool submits a specified vendor credit for approval based on its unique ID. Use it to move vendor credits from draft to approval status in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization where the vendor credit is submitted for approval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_unique_id", + "required": true, + "description": "Unique identifier of the vendor credit to be submitted for approval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'submit_vendor_credit'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/submit", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_unique_id", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/TrackContactFor1099Reporting.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/TrackContactFor1099Reporting.json new file mode 100644 index 00000000..d17b6a49 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/TrackContactFor1099Reporting.json @@ -0,0 +1,154 @@ +{ + "name": "TrackContactFor1099Reporting", + "fully_qualified_name": "ZohoBooksApi.TrackContactFor1099Reporting@0.1.0", + "description": "Track a contact for 1099 reporting in Zoho Books.\n\nUse this tool to track a contact for 1099 reporting, applicable only when the organization's country is the U.S.A. Ideal for ensuring contacts meet 1099 requirements in financial records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization in Zoho Books required for 1099 reporting. This should be the ID specific to the organization tracked in the U.S.A.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_unique_id", + "required": true, + "description": "Unique identifier of the contact for 1099 tracking.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'track_contact_1099'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/track1099", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_unique_id", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/UncategorizeBankTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UncategorizeBankTransaction.json new file mode 100644 index 00000000..056e655c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UncategorizeBankTransaction.json @@ -0,0 +1,187 @@ +{ + "name": "UncategorizeBankTransaction", + "fully_qualified_name": "ZohoBooksApi.UncategorizeBankTransaction@0.1.0", + "description": "Revert a categorized bank transaction to uncategorized.\n\nUse this tool to uncategorize a previously categorized bank transaction. Call this when needing to correct or revert the categorization of a transaction in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books for which the transaction is to be uncategorized.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_id", + "required": true, + "description": "Unique identifier of the bank transaction to uncategorize.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "account_id_for_transactions", + "required": false, + "description": "The mandatory Account ID for which transactions are to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'uncategorize_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/{transaction_id}/uncategorize", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_id_for_transactions", + "description": "Mandatory Account id for which transactions are to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "bank_transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/UnmatchBankTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UnmatchBankTransaction.json new file mode 100644 index 00000000..32c8f43e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UnmatchBankTransaction.json @@ -0,0 +1,187 @@ +{ + "name": "UnmatchBankTransaction", + "fully_qualified_name": "ZohoBooksApi.UnmatchBankTransaction@0.1.0", + "description": "Unmatch a previously matched bank transaction.\n\nUse this tool to unmatch a bank transaction that was previously categorized, reverting it to an uncategorized state.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the transaction unmatching is to be performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "transaction_id", + "required": true, + "description": "The unique identifier of the bank transaction to be unmatched.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "transaction_id" + }, + { + "name": "account_id_for_transactions", + "required": false, + "description": "The mandatory ID of the account for which transactions are to be unlisted. This is essential to specify the correct account involved in the transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'unmatch_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/{transaction_id}/unmatch", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_id_for_transactions", + "description": "Mandatory Account id for which transactions are to be listed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "transaction_id", + "tool_parameter_name": "transaction_id", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/UpdateAccountInfo.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateAccountInfo.json new file mode 100644 index 00000000..59eea963 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateAccountInfo.json @@ -0,0 +1,383 @@ +{ + "name": "UpdateAccountInfo", + "fully_qualified_name": "ZohoBooksApi.UpdateAccountInfo@0.1.0", + "description": "Updates account information in Zoho Books.\n\nThis tool updates the chart of account details for a specified account in Zoho Books. It should be called when account information needs modification, such as changing account names, codes, or related details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The ID of the organization for which the account will be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "account_identifier", + "required": true, + "description": "Unique identifier for the account to update in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "account_update_details", + "required": false, + "description": "JSON object with details for updating the account, including name, type, currency, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the account" + }, + "account_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code Associated with the Account" + }, + "account_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the account. Allowed Values: other_asset, other_current_asset, intangible_asset, right_to_use_asset,financial_asset,contingent_asset,contract_asset, cash, bank, fixed_asset, other_current_liability, contract_liability , refund_liability, credit_card, long_term_liability, loans_and_borrowing ,lease_liability ,employee_benefit_liability ,contingent_liability ,financial_liability , other_liability, equity, income,finance_income ,other_comprehensive_income , other_income, expense, manufacturing_expense ,impairment_expense ,depreciation_expense ,employee_benefit_expense ,lease_expense ,finance_expense ,tax_expense , cost_of_goods_sold, other_expense, accounts_receivable and accounts_payable." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account currency." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the account" + }, + "show_on_dashboard": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "can_show_in_ze": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "include_in_vat_return": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to include an account in VAT returns." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "parent_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Parent Account" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_chart_of_account'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/chartofaccounts/{account_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "account_identifier", + "description": "Unique identifier of the account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "account_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the account" + }, + "account_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code Associated with the Account" + }, + "account_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the account. Allowed Values: other_asset, other_current_asset, intangible_asset, right_to_use_asset,financial_asset,contingent_asset,contract_asset, cash, bank, fixed_asset, other_current_liability, contract_liability , refund_liability, credit_card, long_term_liability, loans_and_borrowing ,lease_liability ,employee_benefit_liability ,contingent_liability ,financial_liability , other_liability, equity, income,finance_income ,other_comprehensive_income , other_income, expense, manufacturing_expense ,impairment_expense ,depreciation_expense ,employee_benefit_expense ,lease_expense ,finance_expense ,tax_expense , cost_of_goods_sold, other_expense, accounts_receivable and accounts_payable." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account currency." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the account" + }, + "show_on_dashboard": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "can_show_in_ze": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "include_in_vat_return": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to include an account in VAT returns." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "parent_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Parent Account" + } + }, + "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 \"account_name\": {\n \"description\": \"Name of the account\",\n \"type\": \"string\",\n \"example\": \"Notes Payable\"\n },\n \"account_code\": {\n \"description\": \"Code Associated with the Account\",\n \"type\": \"string\"\n },\n \"account_type\": {\n \"description\": \"Type of the account. Allowed Values: other_asset, other_current_asset, intangible_asset, right_to_use_asset,financial_asset,contingent_asset,contract_asset, cash, bank, fixed_asset, other_current_liability, contract_liability , refund_liability, credit_card, long_term_liability, loans_and_borrowing ,lease_liability ,employee_benefit_liability ,contingent_liability ,financial_liability , other_liability, equity, income,finance_income ,other_comprehensive_income , other_income, expense, manufacturing_expense ,impairment_expense ,depreciation_expense ,employee_benefit_expense ,lease_expense ,finance_expense ,tax_expense , cost_of_goods_sold, other_expense, accounts_receivable and accounts_payable.\",\n \"type\": \"string\",\n \"example\": \"long_term_liability\"\n },\n \"currency_id\": {\n \"description\": \"ID of the account currency.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"description\": {\n \"description\": \"Description of the account\",\n \"type\": \"string\",\n \"example\": \"A Liability account which can be paid off in a time period longer than one year.\"\n },\n \"show_on_dashboard\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"can_show_in_ze\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"include_in_vat_return\": {\n \"description\": \"Boolean to include an account in VAT returns.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"460000000080163\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"parent_account_id\": {\n \"description\": \"ID of the Parent Account\",\n \"type\": \"string\",\n \"example\": \"460000000009097\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBankAccountRule.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBankAccountRule.json new file mode 100644 index 00000000..1c4873de --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBankAccountRule.json @@ -0,0 +1,511 @@ +{ + "name": "UpdateBankAccountRule", + "fully_qualified_name": "ZohoBooksApi.UpdateBankAccountRule@0.1.0", + "description": "Update or modify a bank account rule in Zoho Books.\n\nThis tool updates an existing bank account rule in Zoho Books. It should be called when you need to make changes to a rule, either by adding new criteria or modifying existing ones. The tool provides confirmation once the rule update is successful.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books for which the bank account rule needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_rule_id", + "required": true, + "description": "Unique identifier for the bank account rule to update in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "bank_account_rule_details", + "required": false, + "description": "JSON object containing the details of the bank account rule to update, including rule name, target account, criteria, and other optional fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rule_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Rule" + }, + "target_account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account on which the rule has to be applied." + }, + "apply_to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rule applies to either deposits or withdrawals for bank accounts and to refunds or charges for credit card account. Allowed Values : withdrawals, deposits, refunds and charges." + }, + "criteria_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether all the criteria have to be satisfied or not. Allowed Values : and and or" + }, + "criterion": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "criteria_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Criteria" + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field involved in the Criteria" + }, + "comparator": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comparator used in Criteria" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value to be compared with" + } + }, + "description": null + }, + "record_as": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Record transaction based on value specified in apply_to node. For bank accounts: If apply_to is deposits: sales_without_invoices, transfer_fund, interest_income, other_income, expense_refund, deposit. If apply_to is withdrawals: expense, transfer_fund, card_payment, owner_drawings. For credit_card accounts: If apply_to is refunds: card_payment, transfer_fund, expense_refund, refund. If apply_to is charges: expense, transfer_fund. Allowed Values: expense, deposit, refund, transfer_fund, card_payment, sales_without_invoices, expense_refund, interest_income, other_income and owner_drawings" + }, + "account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account which is involved in the rule with the target account." + }, + "customer_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer.(Applicable for sales_without_invoices,deposit, expense)" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID involved in the transaction." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies if Reference number is manual or generated from the statement. Allowed Values: manual and from_statement" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bank rules. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling/purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bank transaction.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Product Type associated with the Rule. Allowed values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority Associated with the Rule" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Associated with the Rule" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_bank_account_rule'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/rules/{rule_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rule_id", + "tool_parameter_name": "bank_account_rule_id", + "description": "Unique identifier of the bank account rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bank_account_rule_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rule_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Rule" + }, + "target_account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account on which the rule has to be applied." + }, + "apply_to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rule applies to either deposits or withdrawals for bank accounts and to refunds or charges for credit card account. Allowed Values : withdrawals, deposits, refunds and charges." + }, + "criteria_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies whether all the criteria have to be satisfied or not. Allowed Values : and and or" + }, + "criterion": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "criteria_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Criteria" + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field involved in the Criteria" + }, + "comparator": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comparator used in Criteria" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value to be compared with" + } + }, + "description": null + }, + "record_as": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Record transaction based on value specified in apply_to node. For bank accounts: If apply_to is deposits: sales_without_invoices, transfer_fund, interest_income, other_income, expense_refund, deposit. If apply_to is withdrawals: expense, transfer_fund, card_payment, owner_drawings. For credit_card accounts: If apply_to is refunds: card_payment, transfer_fund, expense_refund, refund. If apply_to is charges: expense, transfer_fund. Allowed Values: expense, deposit, refund, transfer_fund, card_payment, sales_without_invoices, expense_refund, interest_income, other_income and owner_drawings" + }, + "account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account which is involved in the rule with the target account." + }, + "customer_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer.(Applicable for sales_without_invoices,deposit, expense)" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID involved in the transaction." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies if Reference number is manual or generated from the statement. Allowed Values: manual and from_statement" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bank rules. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling/purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bank transaction.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Product Type associated with the Rule. Allowed values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority Associated with the Rule" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Associated with the Rule" + } + }, + "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 \"required\": [\n \"rule_name\",\n \"target_account_id\",\n \"apply_to\",\n \"criteria_type\",\n \"criterion\",\n \"record_as\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"rule_name\": {\n \"description\": \"Name of the Rule\",\n \"type\": \"string\",\n \"example\": \"Minimum Deposit Rule\"\n },\n \"target_account_id\": {\n \"description\": \"The account on which the rule has to be applied.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 460000000048001\n },\n \"apply_to\": {\n \"description\": \"Rule applies to either deposits or withdrawals for bank accounts and to refunds or charges for credit card account. Allowed Values : withdrawals, deposits, refunds and charges.\",\n \"type\": \"string\",\n \"example\": \"deposits\"\n },\n \"criteria_type\": {\n \"description\": \"Specifies whether all the criteria have to be satisfied or not. Allowed Values : and and or\",\n \"type\": \"string\",\n \"example\": \"and\"\n },\n \"criterion\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"criteria_id\": {\n \"description\": \"ID of the Criteria\",\n \"type\": \"string\",\n \"example\": \"460000000048009\"\n },\n \"field\": {\n \"description\": \"Field involved in the Criteria\",\n \"type\": \"string\",\n \"example\": \"amount\"\n },\n \"comparator\": {\n \"description\": \"Comparator used in Criteria\",\n \"type\": \"string\",\n \"example\": \"greater_than_or_equals\"\n },\n \"value\": {\n \"description\": \"Value to be compared with\",\n \"type\": \"string\",\n \"example\": \"500.00\"\n }\n }\n }\n },\n \"record_as\": {\n \"description\": \"Record transaction based on value specified in apply_to node. For bank accounts: If apply_to is deposits: sales_without_invoices, transfer_fund, interest_income, other_income, expense_refund, deposit. If apply_to is withdrawals: expense, transfer_fund, card_payment, owner_drawings. For credit_card accounts: If apply_to is refunds: card_payment, transfer_fund, expense_refund, refund. If apply_to is charges: expense, transfer_fund. Allowed Values: expense, deposit, refund, transfer_fund, card_payment, sales_without_invoices, expense_refund, interest_income, other_income and owner_drawings\",\n \"type\": \"string\",\n \"example\": \"deposit\"\n },\n \"account_id\": {\n \"description\": \"Account which is involved in the rule with the target account.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 460000000049001\n },\n \"customer_id\": {\n \"description\": \"ID of the customer.(Applicable for sales_without_invoices,deposit, expense)\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 46000000000111\n },\n \"tax_id\": {\n \"description\": \"Tax ID involved in the transaction.\",\n \"type\": \"string\",\n \"example\": \"460000000048238\"\n },\n \"reference_number\": {\n \"description\": \"Specifies if Reference number is manual or generated from the statement. Allowed Values: manual and from_statement\",\n \"type\": \"string\",\n \"example\": \"manual\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the bank rules. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling/purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the bank transaction.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Product Type associated with the Rule. Allowed values:
For UK and Europe: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the Tax Authority Associated with the Rule\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption Associated with the Rule\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBankAccountZohoBooks.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBankAccountZohoBooks.json new file mode 100644 index 00000000..322dbc06 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBankAccountZohoBooks.json @@ -0,0 +1,397 @@ +{ + "name": "UpdateBankAccountZohoBooks", + "fully_qualified_name": "ZohoBooksApi.UpdateBankAccountZohoBooks@0.1.0", + "description": "Modify a bank account in Zoho Books.\n\nUse this tool to update details of an existing bank account in Zoho Books. It should be called when there's a need to modify account information such as account name or details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to be modified. Required for identifying the specific organization's bank account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_account_id", + "required": true, + "description": "Unique identifier of the bank account to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "bank_account_details", + "required": false, + "description": "JSON object containing updated account information such as account name, type, number, code, currency details, bank name, and PayPal settings.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the account" + }, + "account_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the account" + }, + "account_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number associated with the Bank Account" + }, + "account_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Account" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency associated with the Account" + }, + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the currency associated with the Bank Account" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Account" + }, + "bank_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Bank" + }, + "routing_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Routing Number of the Account" + }, + "is_primary_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Account is Primary Account in Zoho Books" + }, + "is_paypal_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Account is Paypal Account" + }, + "paypal_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of Payment for the Paypal Account. Allowed Values : standard and adaptive" + }, + "paypal_email_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email Address of the Paypal account." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_bank_account'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bankaccounts/{account_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "bank_account_id", + "description": "Unique identifier of the bank account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bank_account_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the account" + }, + "account_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the account" + }, + "account_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number associated with the Bank Account" + }, + "account_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Account" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency associated with the Account" + }, + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the currency associated with the Bank Account" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Account" + }, + "bank_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Bank" + }, + "routing_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Routing Number of the Account" + }, + "is_primary_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Account is Primary Account in Zoho Books" + }, + "is_paypal_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Account is Paypal Account" + }, + "paypal_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of Payment for the Paypal Account. Allowed Values : standard and adaptive" + }, + "paypal_email_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email Address of the Paypal account." + } + }, + "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 \"required\": [\n \"account_name\",\n \"account_type\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"account_name\": {\n \"description\": \"Name of the account\",\n \"type\": \"string\",\n \"example\": \"Corporate Account\"\n },\n \"account_type\": {\n \"description\": \"Type of the account\",\n \"type\": \"string\",\n \"example\": \"bank\"\n },\n \"account_number\": {\n \"description\": \"Number associated with the Bank Account\",\n \"type\": \"string\",\n \"example\": \"80000009823\"\n },\n \"account_code\": {\n \"description\": \"Code of the Account\",\n \"type\": \"string\"\n },\n \"currency_id\": {\n \"description\": \"ID of the Currency associated with the Account\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"currency_code\": {\n \"description\": \"Code of the currency associated with the Bank Account\",\n \"type\": \"string\",\n \"example\": \"USD\"\n },\n \"description\": {\n \"description\": \"Description of the Account\",\n \"type\": \"string\",\n \"example\": \"Salary details.\"\n },\n \"bank_name\": {\n \"description\": \"Name of the Bank\",\n \"type\": \"string\",\n \"example\": \"Xavier Bank\"\n },\n \"routing_number\": {\n \"description\": \"Routing Number of the Account\",\n \"type\": \"string\",\n \"example\": \"123456789\"\n },\n \"is_primary_account\": {\n \"description\": \"Check if the Account is Primary Account in Zoho Books\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_paypal_account\": {\n \"description\": \"Check if the Account is Paypal Account\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"paypal_type\": {\n \"description\": \"The type of Payment for the Paypal Account. Allowed Values : standard and adaptive\",\n \"type\": \"string\"\n },\n \"paypal_email_address\": {\n \"description\": \"Email Address of the Paypal account.\",\n \"type\": \"string\",\n \"example\": \"johnsmith@zilliuminc.com\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBankTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBankTransaction.json new file mode 100644 index 00000000..1692ae71 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBankTransaction.json @@ -0,0 +1,1003 @@ +{ + "name": "UpdateBankTransaction", + "fully_qualified_name": "ZohoBooksApi.UpdateBankTransaction@0.1.0", + "description": "Update details of a specific bank transaction.\n\nThis tool updates the specified bank transaction with the provided information. Call this tool to make changes to existing transaction details in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books for which the bank transaction is being updated. This is required to specify the organization context for the transaction update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bank_transaction_identifier", + "required": true, + "description": "Unique identifier for the specific bank transaction to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bank_transaction_id" + }, + { + "name": "transaction_details", + "required": false, + "description": "JSON object containing details to update in the bank transaction, including account IDs, transaction type, amount, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense." + }, + "transaction_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency ID involved in the transaction." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if transaction is tax Inclusive" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "from_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "to_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bank Charges applied to the transaction" + }, + "user_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the User involved in the Transaction" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line in Bank Transactions" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Account" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the Tax" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total of the Item" + }, + "item_total_inclusive_of_tax": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total of the Item inclusive of Tax" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_bank_transaction'.", + "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": [ + "ZohoBooks.banking.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/banktransactions/{bank_transaction_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bank_transaction_id", + "tool_parameter_name": "bank_transaction_identifier", + "description": "Unique identifier of the bank transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bank transaction." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "transaction_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense." + }, + "transaction_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the transaction" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.," + }, + "exchange_rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The foreign currency exchange rate value." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Transaction date." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer or vendor." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the transaction" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency ID involved in the transaction." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if transaction is tax Inclusive" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "from_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "to_account_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "file_name": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached file." + }, + "document_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the attached file." + } + }, + "description": "List of files to be attached to a particular transaction." + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Bank Charges applied to the transaction" + }, + "user_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the User involved in the Transaction" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line in Bank Transactions" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory Account id for which transactions are to be listed." + }, + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Account" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A brief description about the transaction." + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied" + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the Tax" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total of the Item" + }, + "item_total_inclusive_of_tax": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total of the Item inclusive of Tax" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": 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 \"required\": [\n \"transaction_type\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"from_account_id\": {\n \"description\": \"The account ID from which money will be transferred(Mandatory for specific type of transactions). These accounts differ with respect to transaction_type. Ex: To a bank account, from-account can be: bank , card, income, refund. To a card account, from account can be: bank, card, refund.\",\n \"type\": \"string\",\n \"example\": \"460000000070003\"\n },\n \"to_account_id\": {\n \"description\": \"ID of the account to which the money gets transferred(Mandatory for specific type of transactions). Ex: From a bank account, to-account can be: bank, card, drawings, expense,credit notes. From a card account, to-account can be: card, bank, expense.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"transaction_type\": {\n \"description\": \"Type of the transaction.
Allowed transaction types : deposit, refund(*Supported only in Credit Card accounts), transfer_fund, card_payment, sales_without_invoices, expense_refund, owner_contribution, interest_income, other_income, owner_drawings, sales_return
Note: You will not be able to create the following module-specific transaction types under Bank Transaction endpoints :\",\n \"type\": \"string\",\n \"example\": \"deposit\"\n },\n \"amount\": {\n \"description\": \"Amount of the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"payment_mode\": {\n \"description\": \"Mode of payment for the transaction. (not applicable for transfer_fund, card_payment, owner_drawings). Ex:cash, cheque, etc.,\",\n \"type\": \"string\",\n \"example\": \"Cash\"\n },\n \"exchange_rate\": {\n \"description\": \"The foreign currency exchange rate value.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"date\": {\n \"description\": \"Transaction date.\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"customer_id\": {\n \"description\": \"ID of the customer or vendor.\",\n \"type\": \"string\",\n \"example\": \"460000000000111\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the transaction\",\n \"type\": \"string\",\n \"example\": \"Ref-121\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n },\n \"currency_id\": {\n \"description\": \"The currency ID involved in the transaction.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"is_inclusive_tax\": {\n \"description\": \"Check if transaction is tax Inclusive\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"from_account_tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"to_account_tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"documents\": {\n \"description\": \"List of files to be attached to a particular transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"file_name\": {\n \"description\": \"Name of the attached file.\"\n },\n \"document_id\": {\n \"description\": \"Unique ID of the attached file.\"\n }\n }\n }\n },\n \"bank_charges\": {\n \"description\": \"Bank Charges applied to the transaction\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"user_id\": {\n \"description\": \"ID of the User involved in the Transaction\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the Tax Authority\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_id\": {\n \"description\": \"ID of the Line in Bank Transactions\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000001234\"\n },\n \"account_id\": {\n \"description\": \"Mandatory Account id for which transactions are to be listed.\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n },\n \"account_name\": {\n \"description\": \"Name of the Account\",\n \"type\": \"string\",\n \"example\": \"Petty Cash\"\n },\n \"description\": {\n \"description\": \"A brief description about the transaction.\",\n \"type\": \"string\"\n },\n \"tax_amount\": {\n \"description\": \"Amount of Tax\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tax_name\": {\n \"description\": \"Name of the Tax\",\n \"type\": \"string\"\n },\n \"tax_type\": {\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_percentage\": {\n \"description\": \"Percentage of the Tax\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"item_total\": {\n \"description\": \"Total of the Item\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 7500\n },\n \"item_total_inclusive_of_tax\": {\n \"description\": \"Total of the Item inclusive of Tax\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 7500\n },\n \"item_order\": {\n \"description\": \"Order of the Item\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillByCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillByCustomField.json new file mode 100644 index 00000000..62f859e7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillByCustomField.json @@ -0,0 +1,1469 @@ +{ + "name": "UpdateBillByCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateBillByCustomField@0.1.0", + "description": "Update or create a bill using a custom field identifier.\n\nUse this tool to update an existing bill or create a new one by specifying a custom field's unique value. The tool retrieves the bill based on the custom field value provided. If the bill is not found and the X-Upsert option is enabled, a new bill will be created with the provided details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the bill is to be updated or created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_identifier_key", + "required": true, + "description": "Specify the API name of the custom field with unique values for identifying the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the API name of the custom field that contains unique values. This field must be configured to not accept duplicate values for the upsert functionality to work properly." + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "custom_field_unique_value", + "required": true, + "description": "Provide the unique value from the custom field to identify and update the specific bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Provide the unique value from the custom field that identifies the specific bill to update. This value will be used to locate the existing bill record in the system." + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "bill_details_payload", + "required": false, + "description": "Provide detailed information about the bill, including vendor, currency, line items, tax details, and any associated custom fields. This JSON object is used to update or create a bill based on the specified custom field identifier.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to determine if customer information should be updated when creating the bill." + }, + "purchaseorder_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of purchase order identifiers linked to this bill for tracking purposes." + }, + "bill_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "permit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The permit number for the bill." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services." + }, + "is_item_level_tax_calc": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for bill adjustment. Examples: \"Early payment discount\", \"Volume discount\", \"Rounding adjustment\", \"Handling fee\". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "purchaseorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units for the line item. Used to calculate line item totals (quantity \u00d7 rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax or tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a bill." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax in the Bill" + } + }, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management." + }, + "approvers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "approver_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Approver" + }, + "order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Approver" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "enable_upsert", + "required": false, + "description": "Set to true to enable upsert functionality. Creates a new bill if no existing bill matches the custom field value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, this header enables upsert functionality. If no bill is found with the specified custom field value, a new bill will be created using the provided payload data." + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_bill_using_custom_field'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_identifier_key", + "description": "Specify the API name of the custom field that contains unique values. This field must be configured to not accept duplicate values for the upsert functionality to work properly.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the API name of the custom field that contains unique values. This field must be configured to not accept duplicate values for the upsert functionality to work properly." + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "custom_field_unique_value", + "description": "Provide the unique value from the custom field that identifies the specific bill to update. This value will be used to locate the existing bill record in the system.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Provide the unique value from the custom field that identifies the specific bill to update. This value will be used to locate the existing bill record in the system." + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "enable_upsert", + "description": "When set to true, this header enables upsert functionality. If no bill is found with the specified custom field value, a new bill will be created using the provided payload data.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, this header enables upsert functionality. If no bill is found with the specified custom field value, a new bill will be created using the provided payload data." + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bill_details_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to determine if customer information should be updated when creating the bill." + }, + "purchaseorder_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of purchase order identifiers linked to this bill for tracking purposes." + }, + "bill_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "permit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The permit number for the bill." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services." + }, + "is_item_level_tax_calc": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for bill adjustment. Examples: \"Early payment discount\", \"Volume discount\", \"Rounding adjustment\", \"Handling fee\". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "purchaseorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units for the line item. Used to calculate line item totals (quantity \u00d7 rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax or tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a bill." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax in the Bill" + } + }, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management." + }, + "approvers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "approver_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Approver" + }, + "order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Approver" + } + }, + "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 \"required\": [\n \"vendor_id\",\n \"bill_number\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API.\",\n \"type\": \"string\",\n \"example\": \"460000000038029\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled.\",\n \"type\": \"string\",\n \"example\": \"460000000000099\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_update_customer\": {\n \"description\": \"Flag to determine if customer information should be updated when creating the bill.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"purchaseorder_ids\": {\n \"description\": \"Array of purchase order identifiers linked to this bill for tracking purposes.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n 460000000068231,\n 460000000068233\n ]\n },\n \"bill_number\": {\n \"description\": \"Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization.\",\n \"type\": \"string\",\n \"example\": \"00454\"\n },\n \"documents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"description\": \"ID of the Document\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"file_name\": {\n \"description\": \"Name of the file\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"source_of_supply\": {\n \"description\": \"State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"permit_number\": {\n \"description\": \"The permit number for the bill.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uae\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions.\",\n \"type\": \"string\",\n \"example\": 460000000038090\n },\n \"reference_number\": {\n \"description\": \"External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers.\",\n \"type\": \"string\",\n \"example\": \"4321133\"\n },\n \"date\": {\n \"description\": \"Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting.\",\n \"type\": \"string\",\n \"example\": \"2013-09-11\"\n },\n \"due_date\": {\n \"description\": \"Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning.\",\n \"type\": \"string\",\n \"example\": \"2013-09-26\"\n },\n \"payment_terms\": {\n \"description\": \"Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports.\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"payment_terms_label\": {\n \"description\": \"Label of the Payment Terms\",\n \"type\": \"string\",\n \"example\": \"Due on Receipt\"\n },\n \"recurring_bill_id\": {\n \"description\": \"Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule.\",\n \"type\": \"string\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1.23\n },\n \"is_item_level_tax_calc\": {\n \"description\": \"Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_inclusive_tax\": {\n \"description\": \"Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"adjustment\": {\n \"description\": \"Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Text description explaining the reason for bill adjustment. Examples: \\\"Early payment discount\\\", \\\"Volume discount\\\", \\\"Rounding adjustment\\\", \\\"Handling fee\\\". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"line_items\": {\n \"description\": \"Line items of a bill.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"purchaseorder_item_id\": {\n \"description\": \"Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills.\",\n \"type\": \"string\"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations.\",\n \"type\": \"string\",\n \"example\": \"460000000067009\"\n },\n \"item_id\": {\n \"description\": \"Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting.\",\n \"type\": \"string\",\n \"example\": \"460000000054135\"\n },\n \"name\": {\n \"description\": \"Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes.\",\n \"type\": \"string\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance.\",\n \"type\": \"string\",\n \"example\": \"460000000000403\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.\",\n \"type\": \"string\"\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Reverse charge tax ID\",\n \"type\": \"string\",\n \"example\": 460000000038056,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"quantity\": {\n \"description\": \"Number of units for the line item. Used to calculate line item totals (quantity \\u00d7 rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.\",\n \"type\": \"string\",\n \"example\": \"460000000027005\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tds_tax_id\": {\n \"description\": \"TDS ID of the tax or tax group applied to the line item\",\n \"type\": \"string\",\n \"example\": \"460000000027009\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_order\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"eu\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization.\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054178\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054180\"\n }\n }\n }\n },\n \"is_billable\": {\n \"description\": \"Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"project_id\": {\n \"description\": \"ID of the Project\",\n \"type\": \"string\"\n },\n \"customer_id\": {\n \"description\": \"ID of the Customer\",\n \"type\": \"string\"\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"serial_numbers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"taxes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.\",\n \"type\": \"string\",\n \"example\": \"460000000027005\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tax_name\": {\n \"description\": \"Name of the Tax\",\n \"type\": \"string\",\n \"example\": \"VAT (12.5%)\"\n },\n \"tax_amount\": {\n \"description\": \"Amount of Tax in the Bill\",\n \"type\": \"string\",\n \"example\": 1.25\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions.\",\n \"type\": \"string\",\n \"example\": \"Thanks for your business.\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management.\",\n \"type\": \"string\",\n \"example\": \"Terms and conditions apply.\"\n },\n \"approvers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"approver_id\": {\n \"description\": \"ID of the Approver\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"order\": {\n \"description\": \"Order of the Approver\",\n \"type\": \"integer\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillInZoho.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillInZoho.json new file mode 100644 index 00000000..3dafc24b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillInZoho.json @@ -0,0 +1,1436 @@ +{ + "name": "UpdateBillInZoho", + "fully_qualified_name": "ZohoBooksApi.UpdateBillInZoho@0.1.0", + "description": "Updates a bill by modifying details in Zoho Books.\n\nThis tool is used to update a bill in Zoho Books. It allows you to modify details or remove line items by excluding them from the list. Call this tool when you need to make changes to an existing bill.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required for updating a bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_unique_identifier", + "required": true, + "description": "The unique identifier for the bill to be updated in Zoho Books. Ensure this matches the bill you intend to modify.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "file_attachment", + "required": false, + "description": "File to attach. Allowed extensions: gif, png, jpeg, jpg, bmp, pdf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf." + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachment" + }, + { + "name": "bill_update_details", + "required": false, + "description": "JSON object containing details to update a bill, including vendor, currency, line items, dates, and tax information. Follow the schema defined by the API for correct fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to determine if customer information should be updated when creating the bill." + }, + "purchaseorder_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of purchase order identifiers linked to this bill for tracking purposes." + }, + "bill_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "permit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The permit number for the bill." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services." + }, + "is_item_level_tax_calc": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for bill adjustment. Examples: \"Early payment discount\", \"Volume discount\", \"Rounding adjustment\", \"Handling fee\". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "purchaseorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units for the line item. Used to calculate line item totals (quantity \u00d7 rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax or tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a bill." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax in the Bill" + } + }, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management." + }, + "approvers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "approver_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Approver" + }, + "order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Approver" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachment", + "tool_parameter_name": "file_attachment", + "description": "File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_unique_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bill_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to determine if customer information should be updated when creating the bill." + }, + "purchaseorder_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of purchase order identifiers linked to this bill for tracking purposes." + }, + "bill_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "permit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The permit number for the bill." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services." + }, + "is_item_level_tax_calc": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for bill adjustment. Examples: \"Early payment discount\", \"Volume discount\", \"Rounding adjustment\", \"Handling fee\". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "purchaseorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units for the line item. Used to calculate line item totals (quantity \u00d7 rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax or tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a bill." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations." + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of Tax in the Bill" + } + }, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management." + }, + "approvers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "approver_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Approver" + }, + "order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Order of the Approver" + } + }, + "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 \"required\": [\n \"vendor_id\",\n \"bill_number\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API.\",\n \"type\": \"string\",\n \"example\": \"460000000038029\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled.\",\n \"type\": \"string\",\n \"example\": \"460000000000099\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_update_customer\": {\n \"description\": \"Flag to determine if customer information should be updated when creating the bill.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"purchaseorder_ids\": {\n \"description\": \"Array of purchase order identifiers linked to this bill for tracking purposes.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n 460000000068231,\n 460000000068233\n ]\n },\n \"bill_number\": {\n \"description\": \"Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization.\",\n \"type\": \"string\",\n \"example\": \"00454\"\n },\n \"documents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"description\": \"ID of the Document\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"file_name\": {\n \"description\": \"Name of the file\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"source_of_supply\": {\n \"description\": \"State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"permit_number\": {\n \"description\": \"The permit number for the bill.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uae\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions.\",\n \"type\": \"string\",\n \"example\": 460000000038090\n },\n \"reference_number\": {\n \"description\": \"External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers.\",\n \"type\": \"string\",\n \"example\": \"4321133\"\n },\n \"date\": {\n \"description\": \"Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting.\",\n \"type\": \"string\",\n \"example\": \"2013-09-11\"\n },\n \"due_date\": {\n \"description\": \"Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning.\",\n \"type\": \"string\",\n \"example\": \"2013-09-26\"\n },\n \"payment_terms\": {\n \"description\": \"Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports.\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"payment_terms_label\": {\n \"description\": \"Label of the Payment Terms\",\n \"type\": \"string\",\n \"example\": \"Due on Receipt\"\n },\n \"recurring_bill_id\": {\n \"description\": \"Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule.\",\n \"type\": \"string\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1.23\n },\n \"is_item_level_tax_calc\": {\n \"description\": \"Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_inclusive_tax\": {\n \"description\": \"Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"adjustment\": {\n \"description\": \"Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Text description explaining the reason for bill adjustment. Examples: \\\"Early payment discount\\\", \\\"Volume discount\\\", \\\"Rounding adjustment\\\", \\\"Handling fee\\\". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"line_items\": {\n \"description\": \"Line items of a bill.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"purchaseorder_item_id\": {\n \"description\": \"Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills.\",\n \"type\": \"string\"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations.\",\n \"type\": \"string\",\n \"example\": \"460000000067009\"\n },\n \"item_id\": {\n \"description\": \"Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting.\",\n \"type\": \"string\",\n \"example\": \"460000000054135\"\n },\n \"name\": {\n \"description\": \"Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes.\",\n \"type\": \"string\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance.\",\n \"type\": \"string\",\n \"example\": \"460000000000403\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.\",\n \"type\": \"string\"\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Reverse charge tax ID\",\n \"type\": \"string\",\n \"example\": 460000000038056,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"quantity\": {\n \"description\": \"Number of units for the line item. Used to calculate line item totals (quantity \\u00d7 rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.\",\n \"type\": \"string\",\n \"example\": \"460000000027005\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tds_tax_id\": {\n \"description\": \"TDS ID of the tax or tax group applied to the line item\",\n \"type\": \"string\",\n \"example\": \"460000000027009\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_order\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"eu\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization.\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054178\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054180\"\n }\n }\n }\n },\n \"is_billable\": {\n \"description\": \"Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"project_id\": {\n \"description\": \"ID of the Project\",\n \"type\": \"string\"\n },\n \"customer_id\": {\n \"description\": \"ID of the Customer\",\n \"type\": \"string\"\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"serial_numbers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"taxes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.\",\n \"type\": \"string\",\n \"example\": \"460000000027005\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tax_name\": {\n \"description\": \"Name of the Tax\",\n \"type\": \"string\",\n \"example\": \"VAT (12.5%)\"\n },\n \"tax_amount\": {\n \"description\": \"Amount of Tax in the Bill\",\n \"type\": \"string\",\n \"example\": 1.25\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions.\",\n \"type\": \"string\",\n \"example\": \"Thanks for your business.\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management.\",\n \"type\": \"string\",\n \"example\": \"Terms and conditions apply.\"\n },\n \"approvers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"approver_id\": {\n \"description\": \"ID of the Approver\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"order\": {\n \"description\": \"Order of the Approver\",\n \"type\": \"integer\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillingAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillingAddress.json new file mode 100644 index 00000000..65df20f3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillingAddress.json @@ -0,0 +1,317 @@ +{ + "name": "UpdateBillingAddress", + "fully_qualified_name": "ZohoBooksApi.UpdateBillingAddress@0.1.0", + "description": "Updates the billing address for a specified bill.\n\nThis tool is used to update the billing address associated with a specific bill. It should be called when there's a need to modify the billing address details of an existing bill.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the billing address is being updated. This identifier is necessary to access specific organizational data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_unique_identifier", + "required": true, + "description": "Provide the unique identifier for the bill to update its billing address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "billing_address_details", + "required": false, + "description": "A JSON object containing the new billing address details. Includes fields like address, city, state, zip, country, fax, attention, and a flag 'is_update_customer' to indicate if customer info should be updated.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address involved in the Bill" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City in the Address" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State involved in the Address" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP Code involved in the Address" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country Involved in the Address" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax of the Vendor" + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to determine if customer information should be updated when creating the bill." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_bill_billing_address'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bills/{bill_id}/address/billing", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_unique_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "billing_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address involved in the Bill" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City in the Address" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State involved in the Address" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP Code involved in the Address" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country Involved in the Address" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax of the Vendor" + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Flag to determine if customer information should be updated when creating the bill." + } + }, + "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 \"address\": {\n \"description\": \"Address involved in the Bill\",\n \"type\": \"string\"\n },\n \"city\": {\n \"description\": \"City in the Address\",\n \"type\": \"string\"\n },\n \"state\": {\n \"description\": \"State involved in the Address\",\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"ZIP Code involved in the Address\",\n \"type\": \"string\"\n },\n \"country\": {\n \"description\": \"Country Involved in the Address\",\n \"type\": \"string\"\n },\n \"fax\": {\n \"description\": \"Fax of the Vendor\",\n \"type\": \"string\"\n },\n \"attention\": {\n \"type\": \"string\"\n },\n \"is_update_customer\": {\n \"description\": \"Flag to determine if customer information should be updated when creating the bill.\",\n \"type\": \"boolean\",\n \"example\": false\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillingAddressRetainerInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillingAddressRetainerInvoice.json new file mode 100644 index 00000000..74a024d0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBillingAddressRetainerInvoice.json @@ -0,0 +1,285 @@ +{ + "name": "UpdateBillingAddressRetainerInvoice", + "fully_qualified_name": "ZohoBooksApi.UpdateBillingAddressRetainerInvoice@0.1.0", + "description": "Update billing address for a retainer invoice.\n\nThis tool updates the billing address associated with a specific retainer invoice. It should be used when there's a need to change the billing address for a particular invoice without affecting other records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's invoice needs updating.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to update the billing address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + }, + { + "name": "billing_address_details", + "required": false, + "description": "A JSON object containing billing address details: address, city, state, zip, country, fax.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "address of the customer" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "city of the customer" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "state of the customer" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "zip of the customer" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "country of the customer" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "fax of the customer" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_retainer_invoice_billing_address'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/address/billing", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "billing_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "address of the customer" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "city of the customer" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "state of the customer" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "zip of the customer" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "country of the customer" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "fax of the customer" + } + }, + "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 \"address\": {\n \"description\": \"address of the customer\",\n \"type\": \"string\",\n \"example\": \"B-1104, 11F, \\nHorizon International Tower, \\nNo. 6, ZhiChun Road, HaiDian District\"\n },\n \"city\": {\n \"description\": \"city of the customer\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"state\": {\n \"description\": \"state of the customer\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"zip\": {\n \"description\": \"zip of the customer\",\n \"type\": \"string\",\n \"example\": 1000881\n },\n \"country\": {\n \"description\": \"country of the customer\",\n \"type\": \"string\"\n },\n \"fax\": {\n \"description\": \"fax of the customer\",\n \"type\": \"string\",\n \"example\": \"+86-10-82637827\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBusinessContact.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBusinessContact.json new file mode 100644 index 00000000..34b4b1ee --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateBusinessContact.json @@ -0,0 +1,1933 @@ +{ + "name": "UpdateBusinessContact", + "fully_qualified_name": "ZohoBooksApi.UpdateBusinessContact@0.1.0", + "description": "Update detailed information for an existing business contact.\n\nUse this tool to modify comprehensive details of an existing contact, including addresses, contact persons, and payment terms. Useful for keeping contact information up-to-date with the latest business details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization to which the contact belongs. This is required for identifying the organization context for the update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_id", + "required": true, + "description": "Unique identifier for the contact to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "contact_details", + "required": false, + "description": "A JSON object containing all the details for updating a business contact, such as name, address, contact persons, payment terms, and tax settings.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name for the contact. It is used for searching and displaying contacts." + }, + "company_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Legal or registered contact's company name. Used for legal documents and formal communications. Max-length [200]." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment after the invoice date." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Human-readable label of payment terms displayed on invoices and other transactions. Max-length [200]." + }, + "contact_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Determines how the contact is treated in the system. Allowed values: customer, vendor." + }, + "customer_sub_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Additional classification for customers. Allowed values: individual, business." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency assigned to this contact. The currency_id must correspond to a valid currency configuration in the system." + }, + "opening_balances": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with this opening balance." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency exchange rate used to convert opening balance to organization's base currency." + }, + "opening_balance_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Initial balance amount for the contact at the time of creation." + } + }, + "description": null + }, + "credit_limit": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : The maximum credit amount that can be allowed for the customer. Once the customer's outstanding receivables reach this limit, the system will restrict the customer from creating any further transactions." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Pricebook id which is associated with the contact. Max-length [200]." + }, + "contact_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact number associated with the contact for internal tracking and identification purposes. Max-length [200]." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the auto generation contact_number is ignored or not for the contact. Allowed values: true, false." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "website": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official website URL of the contact." + }, + "owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Unique identifier for the user assigned as the owner of the contact. This field specifies which user in the organization is responsible for managing the business relationship with this contact." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field. It can hold any value from 1 to 10." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + } + }, + "description": null + }, + "billing_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Billing address information for the contact." + }, + "shipping_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Shipping address information for the contact." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the contact person. For an existing contact person, pass the contact_person_id." + }, + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]." + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person for business communications. Max-length [100]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Phone number of the contact person. Max-length [50]." + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number of the contact person. Max-length [50]." + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Designation of the contact person within the contact's company. Max-length [100]." + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Department of the contact person within the contact's company. Max-length [50]." + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skype username of the contact person. Max-length [50]." + }, + "is_primary_contact": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether this contact person is the primary contact. Only one per contact. Allowed values: true and false." + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact person should have access to the client portal. Allowed values: true and false." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_sms_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether SMS text messages are allowed for the contact person." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether WhatsApp messaging is allowed for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + } + }, + "description": null + }, + "default_templates": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice template id used for this customer while creating invoice." + }, + "estimate_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate template id used for this customer while creating estimate." + }, + "creditnote_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note template id used for this customer while creating credit note." + }, + "purchaseorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order template id used for this vendor while creating purchase order." + }, + "salesorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order template id used for this customer while creating sales order." + }, + "retainerinvoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice template id used for this customer while creating retainer invoice." + }, + "paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "invoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice email template id used for this customer while sending invoices." + }, + "estimate_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate email template id used for this customer while sending estimates." + }, + "creditnote_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note email template id used for this customer while sending credit notes." + }, + "purchaseorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order email template id used for this vendor while sending purchase order." + }, + "salesorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order email template id used for this customer while sending sales order." + }, + "retainerinvoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice email template id used for this contact while sending retainer invoice." + }, + "paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you email template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you email template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "statement_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default statement template id used for this contact while creating statement." + }, + "payment_remittance_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment remittance email template id used for this contact while sending payment remittances." + }, + "bill_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default bill template id used for this vendor while creating bill." + } + }, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional comments or notes about the contact." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "tax_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For GCC Edition: 15 digit Tax Registration number of a contact with Tax treatment as vat_registered,gcc_vat_registered,dz_vat_registered.
For Mexico Edition: 12 digit Tax Registration number of a contact with Tax treatment as
home_country_mexico, border_region_mexico, non_mexico.
Consumers generic RFC: XAXX010101000, Overseas generic RFC: XEXX010101000.
For Kenya Edition: 11 digit Tax Registration number of a contact with Tax treatment as vat_registered
For SouthAfrica Edition: 10 digit Tax Registration number of a contact with Tax treatment as vat_registered" + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: Two letter country code of a contact
For Avalara: Two letter country code for the customer country, if your customer is not in US. Refer [AvaTax Codes for Countries and States][2].
For GCC Editions : Two Letter country code for the GCC Country or the UAE emirate of the contact which will be considered as place of supply.
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax treatment of the contact.
Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered and dz_vat_not_registered
home_country_mexico (A business that is located within MX)
border_region_mexico (A business that is located in the northern and southern border regions in MX)
non_mexico (A business that is located outside MX).
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "tax_exemption_certificate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Exemption Certificate number is issued by the Kenya Revenue Authority (KRA) to organizations or individuals who qualify for tax exemption" + }, + "tax_regime": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Regime of the contact.Allowed Values: general_legal_person, legal_entities_non_profit, resident_abroad, production_cooperative_societies, agricultural_livestock, optional_group_of_companies, coordinated, simplified_trust, wages_salaries_income, lease, property_disposal_acquisition, other_income, resident_abroad, divident_income, individual_business_professional, interest_income, income_obtaining_price, no_tax_obligation, tax_incorporation, income_through_technology_platform, simplified_trust." + }, + "legal_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official legal name of the contact as registered with tax authorities in Mexico." + }, + "is_tds_registered": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact is registered for Tax Deducted at Source (TDS) in Mexico." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment of the contact.Allowed Values:
uk (A business that is located in the UK.),
eu_vat_registered (A business that is reg for VAT and trade goods between Northern Ireland and EU. This node is available only for organizations enabled for NI protocal in VAT Settings.) and
overseas (A business that is located outside UK. Pre Brexit, this was split as eu_vat_registered, eu_vat_not_registered and non_eu )." + }, + "place_of_contact": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or union territory code where the contact is located for Indian tax purposes. (This node identifies the place of supply and source of supply when invoices/bills are raised for the customer/vendor respectively. This is not applicable for Overseas contacts)" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15-digit GST identification number of the contact as issued by the Indian tax authorities." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the tax authority responsible for the customer's tax jurisdiction." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax exemption configuration assigned to this contact." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code identifier for the tax exemption assigned to the contact." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax authority responsible for the customer's tax jurisdiction. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group assigned to the contact. Available only when is_taxable is true." + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the customer is subject to tax collection. Tax-related fields are only available when this field is set to true. Allowed values: true and false." + }, + "facebook": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Facebook profile URL for the contact. Max-length [100]." + }, + "twitter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "X profile URL for the contact. Max-length [100]." + }, + "track_1099": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track a contact for 1099 reporting." + }, + "tax_id_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN." + }, + "tax_id_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID of the contact." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_contact'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_id", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "contact_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name for the contact. It is used for searching and displaying contacts." + }, + "company_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Legal or registered contact's company name. Used for legal documents and formal communications. Max-length [200]." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment after the invoice date." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Human-readable label of payment terms displayed on invoices and other transactions. Max-length [200]." + }, + "contact_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Determines how the contact is treated in the system. Allowed values: customer, vendor." + }, + "customer_sub_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Additional classification for customers. Allowed values: individual, business." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency assigned to this contact. The currency_id must correspond to a valid currency configuration in the system." + }, + "opening_balances": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with this opening balance." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency exchange rate used to convert opening balance to organization's base currency." + }, + "opening_balance_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Initial balance amount for the contact at the time of creation." + } + }, + "description": null + }, + "credit_limit": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : The maximum credit amount that can be allowed for the customer. Once the customer's outstanding receivables reach this limit, the system will restrict the customer from creating any further transactions." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Pricebook id which is associated with the contact. Max-length [200]." + }, + "contact_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact number associated with the contact for internal tracking and identification purposes. Max-length [200]." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the auto generation contact_number is ignored or not for the contact. Allowed values: true, false." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "website": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official website URL of the contact." + }, + "owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Unique identifier for the user assigned as the owner of the contact. This field specifies which user in the organization is responsible for managing the business relationship with this contact." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field. It can hold any value from 1 to 10." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + } + }, + "description": null + }, + "billing_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Billing address information for the contact." + }, + "shipping_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Shipping address information for the contact." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the contact person. For an existing contact person, pass the contact_person_id." + }, + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]." + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person for business communications. Max-length [100]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Phone number of the contact person. Max-length [50]." + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number of the contact person. Max-length [50]." + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Designation of the contact person within the contact's company. Max-length [100]." + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Department of the contact person within the contact's company. Max-length [50]." + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skype username of the contact person. Max-length [50]." + }, + "is_primary_contact": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether this contact person is the primary contact. Only one per contact. Allowed values: true and false." + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact person should have access to the client portal. Allowed values: true and false." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_sms_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether SMS text messages are allowed for the contact person." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether WhatsApp messaging is allowed for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + } + }, + "description": null + }, + "default_templates": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice template id used for this customer while creating invoice." + }, + "estimate_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate template id used for this customer while creating estimate." + }, + "creditnote_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note template id used for this customer while creating credit note." + }, + "purchaseorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order template id used for this vendor while creating purchase order." + }, + "salesorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order template id used for this customer while creating sales order." + }, + "retainerinvoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice template id used for this customer while creating retainer invoice." + }, + "paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "invoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice email template id used for this customer while sending invoices." + }, + "estimate_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate email template id used for this customer while sending estimates." + }, + "creditnote_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note email template id used for this customer while sending credit notes." + }, + "purchaseorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order email template id used for this vendor while sending purchase order." + }, + "salesorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order email template id used for this customer while sending sales order." + }, + "retainerinvoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice email template id used for this contact while sending retainer invoice." + }, + "paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you email template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you email template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "statement_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default statement template id used for this contact while creating statement." + }, + "payment_remittance_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment remittance email template id used for this contact while sending payment remittances." + }, + "bill_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default bill template id used for this vendor while creating bill." + } + }, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional comments or notes about the contact." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "tax_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For GCC Edition: 15 digit Tax Registration number of a contact with Tax treatment as vat_registered,gcc_vat_registered,dz_vat_registered.
For Mexico Edition: 12 digit Tax Registration number of a contact with Tax treatment as
home_country_mexico, border_region_mexico, non_mexico.
Consumers generic RFC: XAXX010101000, Overseas generic RFC: XEXX010101000.
For Kenya Edition: 11 digit Tax Registration number of a contact with Tax treatment as vat_registered
For SouthAfrica Edition: 10 digit Tax Registration number of a contact with Tax treatment as vat_registered" + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: Two letter country code of a contact
For Avalara: Two letter country code for the customer country, if your customer is not in US. Refer [AvaTax Codes for Countries and States][2].
For GCC Editions : Two Letter country code for the GCC Country or the UAE emirate of the contact which will be considered as place of supply.
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax treatment of the contact.
Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered and dz_vat_not_registered
home_country_mexico (A business that is located within MX)
border_region_mexico (A business that is located in the northern and southern border regions in MX)
non_mexico (A business that is located outside MX).
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "tax_exemption_certificate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Exemption Certificate number is issued by the Kenya Revenue Authority (KRA) to organizations or individuals who qualify for tax exemption" + }, + "tax_regime": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Regime of the contact.Allowed Values: general_legal_person, legal_entities_non_profit, resident_abroad, production_cooperative_societies, agricultural_livestock, optional_group_of_companies, coordinated, simplified_trust, wages_salaries_income, lease, property_disposal_acquisition, other_income, resident_abroad, divident_income, individual_business_professional, interest_income, income_obtaining_price, no_tax_obligation, tax_incorporation, income_through_technology_platform, simplified_trust." + }, + "legal_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official legal name of the contact as registered with tax authorities in Mexico." + }, + "is_tds_registered": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact is registered for Tax Deducted at Source (TDS) in Mexico." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment of the contact.Allowed Values:
uk (A business that is located in the UK.),
eu_vat_registered (A business that is reg for VAT and trade goods between Northern Ireland and EU. This node is available only for organizations enabled for NI protocal in VAT Settings.) and
overseas (A business that is located outside UK. Pre Brexit, this was split as eu_vat_registered, eu_vat_not_registered and non_eu )." + }, + "place_of_contact": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or union territory code where the contact is located for Indian tax purposes. (This node identifies the place of supply and source of supply when invoices/bills are raised for the customer/vendor respectively. This is not applicable for Overseas contacts)" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15-digit GST identification number of the contact as issued by the Indian tax authorities." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the tax authority responsible for the customer's tax jurisdiction." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax exemption configuration assigned to this contact." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code identifier for the tax exemption assigned to the contact." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax authority responsible for the customer's tax jurisdiction. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group assigned to the contact. Available only when is_taxable is true." + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the customer is subject to tax collection. Tax-related fields are only available when this field is set to true. Allowed values: true and false." + }, + "facebook": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Facebook profile URL for the contact. Max-length [100]." + }, + "twitter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "X profile URL for the contact. Max-length [100]." + }, + "track_1099": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track a contact for 1099 reporting." + }, + "tax_id_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN." + }, + "tax_id_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID of the contact." + } + }, + "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 \"required\": [\n \"contact_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"contact_name\": {\n \"description\": \"Display name for the contact. It is used for searching and displaying contacts.\",\n \"type\": \"string\",\n \"example\": \"Bowman and Co\"\n },\n \"company_name\": {\n \"description\": \"Legal or registered contact's company name. Used for legal documents and formal communications. Max-length [200].\",\n \"type\": \"string\",\n \"example\": \"Bowman and Co\"\n },\n \"payment_terms\": {\n \"description\": \"Number of days allowed for payment after the invoice date.\",\n \"type\": \"integer\",\n \"example\": 15\n },\n \"payment_terms_label\": {\n \"description\": \"Human-readable label of payment terms displayed on invoices and other transactions. Max-length [200].\",\n \"type\": \"string\",\n \"example\": \"Net 15\"\n },\n \"contact_type\": {\n \"description\": \"Determines how the contact is treated in the system. Allowed values: customer, vendor.\",\n \"type\": \"string\",\n \"example\": \"customer\"\n },\n \"customer_sub_type\": {\n \"description\": \"For Customer Only : Additional classification for customers. Allowed values: individual, business.\",\n \"type\": \"string\",\n \"example\": \"business\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency assigned to this contact. The currency_id must correspond to a valid currency configuration in the system.\",\n \"type\": \"string\",\n \"example\": 460000000000097\n },\n \"opening_balances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"location_id\": {\n \"description\": \"Unique identifier for the business location associated with this opening balance.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"exchange_rate\": {\n \"description\": \"Currency exchange rate used to convert opening balance to organization's base currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"opening_balance_amount\": {\n \"description\": \"Initial balance amount for the contact at the time of creation.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1200\n }\n }\n }\n },\n \"credit_limit\": {\n \"description\": \"For Customer Only : The maximum credit amount that can be allowed for the customer. Once the customer's outstanding receivables reach this limit, the system will restrict the customer from creating any further transactions.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1000\n },\n \"pricebook_id\": {\n \"description\": \"Pricebook id which is associated with the contact. Max-length [200].\",\n \"type\": \"string\",\n \"example\": 460000000000123\n },\n \"contact_number\": {\n \"description\": \"Contact number associated with the contact for internal tracking and identification purposes. Max-length [200].\",\n \"type\": \"string\",\n \"example\": \"CNT-001234\"\n },\n \"ignore_auto_number_generation\": {\n \"description\": \"Indicates whether the auto generation contact_number is ignored or not for the contact. Allowed values: true, false.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"tags\": {\n \"description\": \"Filter all your reports based on the tag\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 462000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 462000000002670\n }\n }\n }\n },\n \"website\": {\n \"description\": \"Official website URL of the contact.\",\n \"type\": \"string\",\n \"example\": \"www.bowmanfurniture.com\"\n },\n \"owner_id\": {\n \"description\": \"For Customer Only : Unique identifier for the user assigned as the owner of the contact. This field specifies which user in the organization is responsible for managing the business relationship with this contact.\",\n \"type\": \"string\",\n \"example\": 460000000016051\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field. It can hold any value from 1 to 10.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": \"GBGD078\"\n },\n \"label\": {\n \"description\": \"Label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"VAT ID\"\n }\n }\n }\n },\n \"billing_address\": {\n \"description\": \"Billing address information for the contact.\",\n \"type\": \"object\",\n \"properties\": {\n \"attention\": {\n \"description\": \"Attention for proper delivery and routing of business correspondence. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Mr.John\"\n },\n \"address\": {\n \"description\": \"Street 1 address for the contact. Max-length [500].\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd\"\n },\n \"street2\": {\n \"description\": \"Street 2 address for the contact. Max-length [255].\",\n \"type\": \"string\",\n \"example\": \"Suite 310\"\n },\n \"state_code\": {\n \"description\": \"State or province code for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"city\": {\n \"description\": \"City name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Postal or ZIP code for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Fax number for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n },\n \"phone\": {\n \"description\": \"The contact phone number associated with the address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n }\n }\n },\n \"shipping_address\": {\n \"description\": \"Shipping address information for the contact.\",\n \"type\": \"object\",\n \"properties\": {\n \"attention\": {\n \"description\": \"Attention for proper delivery and routing of business correspondence. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Mr.John\"\n },\n \"address\": {\n \"description\": \"Street 1 address for the contact. Max-length [500].\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd\"\n },\n \"street2\": {\n \"description\": \"Street 2 address for the contact. Max-length [255].\",\n \"type\": \"string\",\n \"example\": \"Suite 310\"\n },\n \"state_code\": {\n \"description\": \"State or province code for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"city\": {\n \"description\": \"City name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Postal or ZIP code for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Fax number for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n },\n \"phone\": {\n \"description\": \"The contact phone number associated with the address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n }\n }\n },\n \"contact_persons\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"ID of the contact person. For an existing contact person, pass the contact_person_id.\",\n \"type\": \"string\",\n \"example\": 460000000026051\n },\n \"salutation\": {\n \"description\": \"Salutation for the contact. Max-length [25]\",\n \"type\": \"string\",\n \"example\": \"Mr\"\n },\n \"first_name\": {\n \"description\": \"First name of the contact person. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Will\"\n },\n \"last_name\": {\n \"description\": \"Last name of the contact person. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Smith\"\n },\n \"email\": {\n \"description\": \"Email address of the contact person for business communications. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"willsmith@bowmanfurniture.com\"\n },\n \"phone\": {\n \"description\": \"Phone number of the contact person. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n },\n \"mobile\": {\n \"description\": \"Mobile number of the contact person. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-4054439562\"\n },\n \"designation\": {\n \"description\": \"Designation of the contact person within the contact's company. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Sales Executive\"\n },\n \"department\": {\n \"description\": \"Department of the contact person within the contact's company. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"Sales and Marketing\"\n },\n \"skype\": {\n \"description\": \"Skype username of the contact person. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"Zoho\"\n },\n \"is_primary_contact\": {\n \"description\": \"Indicates whether this contact person is the primary contact. Only one per contact. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"enable_portal\": {\n \"description\": \"Indicates whether the contact person should have access to the client portal. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_sms_enabled\": {\n \"description\": \"Whether SMS text messages are allowed for the contact person.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"SMS integration\"\n ]\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Whether WhatsApp messaging is allowed for the contact person.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"default_templates\": {\n \"type\": \"object\",\n \"properties\": {\n \"invoice_template_id\": {\n \"description\": \"Default invoice template id used for this customer while creating invoice.\",\n \"type\": \"string\",\n \"example\": 460000000052069\n },\n \"estimate_template_id\": {\n \"description\": \"Default estimate template id used for this customer while creating estimate.\",\n \"type\": \"string\",\n \"example\": 460000000000179\n },\n \"creditnote_template_id\": {\n \"description\": \"Default credit note template id used for this customer while creating credit note.\",\n \"type\": \"string\",\n \"example\": 460000000000211\n },\n \"purchaseorder_template_id\": {\n \"description\": \"Default purchase order template id used for this vendor while creating purchase order.\",\n \"type\": \"string\",\n \"example\": 460000000000213\n },\n \"salesorder_template_id\": {\n \"description\": \"Default sales order template id used for this customer while creating sales order.\",\n \"type\": \"string\",\n \"example\": 460000000000214\n },\n \"retainerinvoice_template_id\": {\n \"description\": \"Default retainer invoice template id used for this customer while creating retainer invoice.\",\n \"type\": \"string\",\n \"example\": 460000000000215\n },\n \"paymentthankyou_template_id\": {\n \"description\": \"Default payment thank you template id used for this contact while sending payment acknowledgment.\",\n \"type\": \"string\",\n \"example\": 460000000000216\n },\n \"retainerinvoice_paymentthankyou_template_id\": {\n \"description\": \"Default retainer invoice payment thank you template id used for this customer while sending payment acknowledgment for retainer invoices.\",\n \"type\": \"string\",\n \"example\": 460000000000217\n },\n \"invoice_email_template_id\": {\n \"description\": \"Default invoice email template id used for this customer while sending invoices.\",\n \"type\": \"string\",\n \"example\": 460000000052071\n },\n \"estimate_email_template_id\": {\n \"description\": \"Default estimate email template id used for this customer while sending estimates.\",\n \"type\": \"string\",\n \"example\": 460000000052073\n },\n \"creditnote_email_template_id\": {\n \"description\": \"Default credit note email template id used for this customer while sending credit notes.\",\n \"type\": \"string\",\n \"example\": 460000000052075\n },\n \"purchaseorder_email_template_id\": {\n \"description\": \"Default purchase order email template id used for this vendor while sending purchase order.\",\n \"type\": \"string\",\n \"example\": 460000000000218\n },\n \"salesorder_email_template_id\": {\n \"description\": \"Default sales order email template id used for this customer while sending sales order.\",\n \"type\": \"string\",\n \"example\": 460000000000219\n },\n \"retainerinvoice_email_template_id\": {\n \"description\": \"Default retainer invoice email template id used for this contact while sending retainer invoice.\",\n \"type\": \"string\",\n \"example\": 460000000000220\n },\n \"paymentthankyou_email_template_id\": {\n \"description\": \"Default payment thank you email template id used for this contact while sending payment acknowledgment.\",\n \"type\": \"string\",\n \"example\": 460000000000221\n },\n \"retainerinvoice_paymentthankyou_email_template_id\": {\n \"description\": \"Default retainer invoice payment thank you email template id used for this customer while sending payment acknowledgment for retainer invoices.\",\n \"type\": \"string\",\n \"example\": 460000000000222\n },\n \"statement_template_id\": {\n \"description\": \"Default statement template id used for this contact while creating statement.\",\n \"type\": \"string\",\n \"example\": 460000000000101\n },\n \"payment_remittance_email_template_id\": {\n \"description\": \"Default payment remittance email template id used for this contact while sending payment remittances.\",\n \"type\": \"string\",\n \"example\": 460000000000102\n },\n \"bill_template_id\": {\n \"description\": \"Default bill template id used for this vendor while creating bill.\",\n \"type\": \"string\",\n \"example\": 460000000000103\n }\n }\n },\n \"notes\": {\n \"description\": \"Additional comments or notes about the contact.\",\n \"type\": \"string\",\n \"example\": \"Payment option : Through check\"\n },\n \"vat_reg_no\": {\n \"description\": \"For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_reg_no\": {\n \"description\": \"For GCC Edition: 15 digit Tax Registration number of a contact with Tax treatment as vat_registered,gcc_vat_registered,dz_vat_registered.
For Mexico Edition: 12 digit Tax Registration number of a contact with Tax treatment as
home_country_mexico, border_region_mexico, non_mexico.
Consumers generic RFC: XAXX010101000, Overseas generic RFC: XEXX010101000.
For Kenya Edition: 11 digit Tax Registration number of a contact with Tax treatment as vat_registered
For SouthAfrica Edition: 10 digit Tax Registration number of a contact with Tax treatment as vat_registered\",\n \"type\": \"string\",\n \"example\": 12345678912345,\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"country_code\": {\n \"description\": \"For UK Edition: Two letter country code of a contact
For Avalara: Two letter country code for the customer country, if your customer is not in US. Refer [AvaTax Codes for Countries and States][2].
For GCC Editions : Two Letter country code for the GCC Country or the UAE emirate of the contact which will be considered as place of supply.
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"gcc\",\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"Tax treatment of the contact.
Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered and dz_vat_not_registered
home_country_mexico (A business that is located within MX)
border_region_mexico (A business that is located in the northern and southern border regions in MX)
non_mexico (A business that is located outside MX).
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_certificate_number\": {\n \"description\": \"Tax Exemption Certificate number is issued by the Kenya Revenue Authority (KRA) to organizations or individuals who qualify for tax exemption\",\n \"type\": \"string\",\n \"example\": \"KRAEXM0043310521\",\n \"x-node_available_in\": [\n \"ke\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_regime\": {\n \"description\": \"Tax Regime of the contact.Allowed Values: general_legal_person, legal_entities_non_profit, resident_abroad, production_cooperative_societies, agricultural_livestock, optional_group_of_companies, coordinated, simplified_trust, wages_salaries_income, lease, property_disposal_acquisition, other_income, resident_abroad, divident_income, individual_business_professional, interest_income, income_obtaining_price, no_tax_obligation, tax_incorporation, income_through_technology_platform, simplified_trust.\",\n \"type\": \"string\",\n \"example\": \"general_legal_person\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"legal_name\": {\n \"description\": \"Official legal name of the contact as registered with tax authorities in Mexico.\",\n \"type\": \"string\",\n \"example\": \"ESCUELA KEMPER URGATE\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_tds_registered\": {\n \"description\": \"Indicates whether the contact is registered for Tax Deducted at Source (TDS) in Mexico.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment of the contact.Allowed Values:
uk (A business that is located in the UK.),
eu_vat_registered (A business that is reg for VAT and trade goods between Northern Ireland and EU. This node is available only for organizations enabled for NI protocal in VAT Settings.) and
overseas (A business that is located outside UK. Pre Brexit, this was split as eu_vat_registered, eu_vat_not_registered and non_eu ).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_contact\": {\n \"description\": \"State or union territory code where the contact is located for Indian tax purposes. (This node identifies the place of supply and source of supply when invoices/bills are raised for the customer/vendor respectively. This is not applicable for Overseas contacts)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15-digit GST identification number of the contact as issued by the Indian tax authorities.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Display name of the tax authority responsible for the customer's tax jurisdiction.\",\n \"type\": \"string\"\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique identifier for the tax exemption configuration assigned to this contact.\",\n \"type\": \"string\",\n \"example\": 11149000000061054,\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"au\",\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code identifier for the tax exemption assigned to the contact.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"au\",\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"Unique identifier for the tax authority responsible for the customer's tax jurisdiction. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": 11149000000061052,\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax or tax group assigned to the contact. Available only when is_taxable is true.\",\n \"type\": \"string\",\n \"example\": 11149000000061058,\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_taxable\": {\n \"description\": \"Indicates whether the customer is subject to tax collection. Tax-related fields are only available when this field is set to true. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"au\",\n \"in\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"facebook\": {\n \"description\": \"Facebook profile URL for the contact. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"zoho\"\n },\n \"twitter\": {\n \"description\": \"X profile URL for the contact. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"zoho\"\n },\n \"track_1099\": {\n \"description\": \"Boolean to track a contact for 1099 reporting.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id_type\": {\n \"description\": \"Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id_value\": {\n \"description\": \"Tax ID of the contact.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateContactAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateContactAddress.json new file mode 100644 index 00000000..32babd3d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateContactAddress.json @@ -0,0 +1,382 @@ +{ + "name": "UpdateContactAddress", + "fully_qualified_name": "ZohoBooksApi.UpdateContactAddress@0.1.0", + "description": "Edit the additional address of a contact.\n\nUse this tool to update the additional address associated with a contact in Zoho Books. It requires the contact ID and address ID to specify the contact and address to be updated.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This is required to specify which organization's contact address needs updating.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_identifier", + "required": true, + "description": "Unique identifier of the contact to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_id" + }, + { + "name": "address_identifier", + "required": true, + "description": "Unique identifier of the address to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the address." + }, + "inferrable": true, + "http_endpoint_parameter_name": "address_id" + }, + { + "name": "contact_address_details", + "required": false, + "description": "JSON object containing address details to update. Include fields like attention, address, street2, city, state, zip, country, fax, phone, and address_id, adhering to max-length constraints.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + }, + "address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address id of the address" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_contact_address'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/{contact_id}/address/{address_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_id", + "tool_parameter_name": "contact_identifier", + "description": "Unique identifier of the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "address_id", + "tool_parameter_name": "address_identifier", + "description": "Unique identifier of the address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the address." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "contact_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + }, + "address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address id of the address" + } + }, + "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 \"required\": [\n \"address_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"attention\": {\n \"description\": \"Attention for proper delivery and routing of business correspondence. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Mr.John\"\n },\n \"address\": {\n \"description\": \"Street 1 address for the contact. Max-length [500].\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd\"\n },\n \"street2\": {\n \"description\": \"Street 2 address for the contact. Max-length [255].\",\n \"type\": \"string\",\n \"example\": \"Suite 310\"\n },\n \"city\": {\n \"description\": \"City name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Postal or ZIP code for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Fax number for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n },\n \"phone\": {\n \"description\": \"The contact phone number associated with the address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n },\n \"address_id\": {\n \"description\": \"Address id of the address\",\n \"type\": \"string\",\n \"example\": 1053791000000186000\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateContactByCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateContactByCustomField.json new file mode 100644 index 00000000..dd57f84f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateContactByCustomField.json @@ -0,0 +1,1999 @@ +{ + "name": "UpdateContactByCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateContactByCustomField@0.1.0", + "description": "Update a contact using a unique custom field value.\n\nThis tool updates or creates a contact in Zoho Books based on a unique custom field value. Use it when you need to modify a contact using a non-duplicate custom field value, or create a new contact if the unique value isn't found and upsert is enabled.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books. This is required to specify which organization's records to update or create.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "custom_field_api_name", + "required": true, + "description": "The API name of the unique custom field used to identify the contact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "The unique value of the custom field used to identify the contact. Must be a non-duplicate value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "contact_details_payload", + "required": false, + "description": "A JSON payload containing details for the contact update. Includes fields like contact_name, company_name, payment_terms, and more. This is used to either update the existing contact or create a new one if the X-Upsert option is true.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name for the contact. It is used for searching and displaying contacts." + }, + "company_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Legal or registered contact's company name. Used for legal documents and formal communications. Max-length [200]." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment after the invoice date." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Human-readable label of payment terms displayed on invoices and other transactions. Max-length [200]." + }, + "contact_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Determines how the contact is treated in the system. Allowed values: customer, vendor." + }, + "customer_sub_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Additional classification for customers. Allowed values: individual, business." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency assigned to this contact. The currency_id must correspond to a valid currency configuration in the system." + }, + "opening_balances": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with this opening balance." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency exchange rate used to convert opening balance to organization's base currency." + }, + "opening_balance_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Initial balance amount for the contact at the time of creation." + } + }, + "description": null + }, + "credit_limit": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : The maximum credit amount that can be allowed for the customer. Once the customer's outstanding receivables reach this limit, the system will restrict the customer from creating any further transactions." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Pricebook id which is associated with the contact. Max-length [200]." + }, + "contact_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact number associated with the contact for internal tracking and identification purposes. Max-length [200]." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the auto generation contact_number is ignored or not for the contact. Allowed values: true, false." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "website": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official website URL of the contact." + }, + "owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Unique identifier for the user assigned as the owner of the contact. This field specifies which user in the organization is responsible for managing the business relationship with this contact." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field. It can hold any value from 1 to 10." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + } + }, + "description": null + }, + "billing_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Billing address information for the contact." + }, + "shipping_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Shipping address information for the contact." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the contact person. For an existing contact person, pass the contact_person_id." + }, + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]." + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person for business communications. Max-length [100]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Phone number of the contact person. Max-length [50]." + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number of the contact person. Max-length [50]." + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Designation of the contact person within the contact's company. Max-length [100]." + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Department of the contact person within the contact's company. Max-length [50]." + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skype username of the contact person. Max-length [50]." + }, + "is_primary_contact": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether this contact person is the primary contact. Only one per contact. Allowed values: true and false." + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact person should have access to the client portal. Allowed values: true and false." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_sms_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether SMS text messages are allowed for the contact person." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether WhatsApp messaging is allowed for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + } + }, + "description": null + }, + "default_templates": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice template id used for this customer while creating invoice." + }, + "estimate_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate template id used for this customer while creating estimate." + }, + "creditnote_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note template id used for this customer while creating credit note." + }, + "purchaseorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order template id used for this vendor while creating purchase order." + }, + "salesorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order template id used for this customer while creating sales order." + }, + "retainerinvoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice template id used for this customer while creating retainer invoice." + }, + "paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "invoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice email template id used for this customer while sending invoices." + }, + "estimate_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate email template id used for this customer while sending estimates." + }, + "creditnote_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note email template id used for this customer while sending credit notes." + }, + "purchaseorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order email template id used for this vendor while sending purchase order." + }, + "salesorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order email template id used for this customer while sending sales order." + }, + "retainerinvoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice email template id used for this contact while sending retainer invoice." + }, + "paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you email template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you email template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "statement_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default statement template id used for this contact while creating statement." + }, + "payment_remittance_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment remittance email template id used for this contact while sending payment remittances." + }, + "bill_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default bill template id used for this vendor while creating bill." + } + }, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional comments or notes about the contact." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "tax_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For GCC Edition: 15 digit Tax Registration number of a contact with Tax treatment as vat_registered,gcc_vat_registered,dz_vat_registered.
For Mexico Edition: 12 digit Tax Registration number of a contact with Tax treatment as
home_country_mexico, border_region_mexico, non_mexico.
Consumers generic RFC: XAXX010101000, Overseas generic RFC: XEXX010101000.
For Kenya Edition: 11 digit Tax Registration number of a contact with Tax treatment as vat_registered
For SouthAfrica Edition: 10 digit Tax Registration number of a contact with Tax treatment as vat_registered" + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: Two letter country code of a contact
For Avalara: Two letter country code for the customer country, if your customer is not in US. Refer [AvaTax Codes for Countries and States][2].
For GCC Editions : Two Letter country code for the GCC Country or the UAE emirate of the contact which will be considered as place of supply.
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax treatment of the contact.
Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered and dz_vat_not_registered
home_country_mexico (A business that is located within MX)
border_region_mexico (A business that is located in the northern and southern border regions in MX)
non_mexico (A business that is located outside MX).
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "tax_exemption_certificate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Exemption Certificate number is issued by the Kenya Revenue Authority (KRA) to organizations or individuals who qualify for tax exemption" + }, + "tax_regime": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Regime of the contact.Allowed Values: general_legal_person, legal_entities_non_profit, resident_abroad, production_cooperative_societies, agricultural_livestock, optional_group_of_companies, coordinated, simplified_trust, wages_salaries_income, lease, property_disposal_acquisition, other_income, resident_abroad, divident_income, individual_business_professional, interest_income, income_obtaining_price, no_tax_obligation, tax_incorporation, income_through_technology_platform, simplified_trust." + }, + "legal_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official legal name of the contact as registered with tax authorities in Mexico." + }, + "is_tds_registered": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact is registered for Tax Deducted at Source (TDS) in Mexico." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment of the contact.Allowed Values:
uk (A business that is located in the UK.),
eu_vat_registered (A business that is reg for VAT and trade goods between Northern Ireland and EU. This node is available only for organizations enabled for NI protocal in VAT Settings.) and
overseas (A business that is located outside UK. Pre Brexit, this was split as eu_vat_registered, eu_vat_not_registered and non_eu )." + }, + "place_of_contact": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or union territory code where the contact is located for Indian tax purposes. (This node identifies the place of supply and source of supply when invoices/bills are raised for the customer/vendor respectively. This is not applicable for Overseas contacts)" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15-digit GST identification number of the contact as issued by the Indian tax authorities." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the tax authority responsible for the customer's tax jurisdiction." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax exemption configuration assigned to this contact." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code identifier for the tax exemption assigned to the contact." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax authority responsible for the customer's tax jurisdiction. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group assigned to the contact. Available only when is_taxable is true." + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the customer is subject to tax collection. Tax-related fields are only available when this field is set to true. Allowed values: true and false." + }, + "facebook": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Facebook profile URL for the contact. Max-length [100]." + }, + "twitter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "X profile URL for the contact. Max-length [100]." + }, + "track_1099": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track a contact for 1099 reporting." + }, + "tax_id_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN." + }, + "tax_id_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID of the contact." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_contact_if_not_found", + "required": false, + "description": "Set to true to create a new contact if the unique custom field value isn't found.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_contact_using_custom_field'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_contact_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "contact_details_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name for the contact. It is used for searching and displaying contacts." + }, + "company_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Legal or registered contact's company name. Used for legal documents and formal communications. Max-length [200]." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment after the invoice date." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Human-readable label of payment terms displayed on invoices and other transactions. Max-length [200]." + }, + "contact_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Determines how the contact is treated in the system. Allowed values: customer, vendor." + }, + "customer_sub_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Additional classification for customers. Allowed values: individual, business." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency assigned to this contact. The currency_id must correspond to a valid currency configuration in the system." + }, + "opening_balances": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with this opening balance." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency exchange rate used to convert opening balance to organization's base currency." + }, + "opening_balance_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Initial balance amount for the contact at the time of creation." + } + }, + "description": null + }, + "credit_limit": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : The maximum credit amount that can be allowed for the customer. Once the customer's outstanding receivables reach this limit, the system will restrict the customer from creating any further transactions." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Pricebook id which is associated with the contact. Max-length [200]." + }, + "contact_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact number associated with the contact for internal tracking and identification purposes. Max-length [200]." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the auto generation contact_number is ignored or not for the contact. Allowed values: true, false." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "website": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official website URL of the contact." + }, + "owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For Customer Only : Unique identifier for the user assigned as the owner of the contact. This field specifies which user in the organization is responsible for managing the business relationship with this contact." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field. It can hold any value from 1 to 10." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + } + }, + "description": null + }, + "billing_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Billing address information for the contact." + }, + "shipping_address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention for proper delivery and routing of business correspondence. Max-length [100]." + }, + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 1 address for the contact. Max-length [500]." + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street 2 address for the contact. Max-length [255]." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or province code for the address. Max-length [100]." + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City name for the address. Max-length [100]." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State for the address. Max-length [100]." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Postal or ZIP code for the address. Max-length [50]." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country name for the address. Max-length [100]." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax number for the address. Max-length [50]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The contact phone number associated with the address. Max-length [50]" + } + }, + "inner_properties": null, + "description": "Shipping address information for the contact." + }, + "contact_persons": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the contact person. For an existing contact person, pass the contact_person_id." + }, + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]." + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person for business communications. Max-length [100]." + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Phone number of the contact person. Max-length [50]." + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number of the contact person. Max-length [50]." + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Designation of the contact person within the contact's company. Max-length [100]." + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Department of the contact person within the contact's company. Max-length [50]." + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skype username of the contact person. Max-length [50]." + }, + "is_primary_contact": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether this contact person is the primary contact. Only one per contact. Allowed values: true and false." + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact person should have access to the client portal. Allowed values: true and false." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_sms_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether SMS text messages are allowed for the contact person." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether WhatsApp messaging is allowed for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + } + }, + "description": null + }, + "default_templates": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "invoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice template id used for this customer while creating invoice." + }, + "estimate_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate template id used for this customer while creating estimate." + }, + "creditnote_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note template id used for this customer while creating credit note." + }, + "purchaseorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order template id used for this vendor while creating purchase order." + }, + "salesorder_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order template id used for this customer while creating sales order." + }, + "retainerinvoice_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice template id used for this customer while creating retainer invoice." + }, + "paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "invoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default invoice email template id used for this customer while sending invoices." + }, + "estimate_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default estimate email template id used for this customer while sending estimates." + }, + "creditnote_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default credit note email template id used for this customer while sending credit notes." + }, + "purchaseorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default purchase order email template id used for this vendor while sending purchase order." + }, + "salesorder_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default sales order email template id used for this customer while sending sales order." + }, + "retainerinvoice_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice email template id used for this contact while sending retainer invoice." + }, + "paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment thank you email template id used for this contact while sending payment acknowledgment." + }, + "retainerinvoice_paymentthankyou_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default retainer invoice payment thank you email template id used for this customer while sending payment acknowledgment for retainer invoices." + }, + "statement_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default statement template id used for this contact while creating statement." + }, + "payment_remittance_email_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default payment remittance email template id used for this contact while sending payment remittances." + }, + "bill_template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default bill template id used for this vendor while creating bill." + } + }, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional comments or notes about the contact." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "tax_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For GCC Edition: 15 digit Tax Registration number of a contact with Tax treatment as vat_registered,gcc_vat_registered,dz_vat_registered.
For Mexico Edition: 12 digit Tax Registration number of a contact with Tax treatment as
home_country_mexico, border_region_mexico, non_mexico.
Consumers generic RFC: XAXX010101000, Overseas generic RFC: XEXX010101000.
For Kenya Edition: 11 digit Tax Registration number of a contact with Tax treatment as vat_registered
For SouthAfrica Edition: 10 digit Tax Registration number of a contact with Tax treatment as vat_registered" + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: Two letter country code of a contact
For Avalara: Two letter country code for the customer country, if your customer is not in US. Refer [AvaTax Codes for Countries and States][2].
For GCC Editions : Two Letter country code for the GCC Country or the UAE emirate of the contact which will be considered as place of supply.
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax treatment of the contact.
Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered and dz_vat_not_registered
home_country_mexico (A business that is located within MX)
border_region_mexico (A business that is located in the northern and southern border regions in MX)
non_mexico (A business that is located outside MX).
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "tax_exemption_certificate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Exemption Certificate number is issued by the Kenya Revenue Authority (KRA) to organizations or individuals who qualify for tax exemption" + }, + "tax_regime": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Regime of the contact.Allowed Values: general_legal_person, legal_entities_non_profit, resident_abroad, production_cooperative_societies, agricultural_livestock, optional_group_of_companies, coordinated, simplified_trust, wages_salaries_income, lease, property_disposal_acquisition, other_income, resident_abroad, divident_income, individual_business_professional, interest_income, income_obtaining_price, no_tax_obligation, tax_incorporation, income_through_technology_platform, simplified_trust." + }, + "legal_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Official legal name of the contact as registered with tax authorities in Mexico." + }, + "is_tds_registered": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the contact is registered for Tax Deducted at Source (TDS) in Mexico." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment of the contact.Allowed Values:
uk (A business that is located in the UK.),
eu_vat_registered (A business that is reg for VAT and trade goods between Northern Ireland and EU. This node is available only for organizations enabled for NI protocal in VAT Settings.) and
overseas (A business that is located outside UK. Pre Brexit, this was split as eu_vat_registered, eu_vat_not_registered and non_eu )." + }, + "place_of_contact": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State or union territory code where the contact is located for Indian tax purposes. (This node identifies the place of supply and source of supply when invoices/bills are raised for the customer/vendor respectively. This is not applicable for Overseas contacts)" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15-digit GST identification number of the contact as issued by the Indian tax authorities." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the tax authority responsible for the customer's tax jurisdiction." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax exemption configuration assigned to this contact." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code identifier for the tax exemption assigned to the contact." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax authority responsible for the customer's tax jurisdiction. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax or tax group assigned to the contact. Available only when is_taxable is true." + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the customer is subject to tax collection. Tax-related fields are only available when this field is set to true. Allowed values: true and false." + }, + "facebook": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Facebook profile URL for the contact. Max-length [100]." + }, + "twitter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "X profile URL for the contact. Max-length [100]." + }, + "track_1099": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track a contact for 1099 reporting." + }, + "tax_id_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN." + }, + "tax_id_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID of the contact." + } + }, + "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 \"required\": [\n \"contact_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"contact_name\": {\n \"description\": \"Display name for the contact. It is used for searching and displaying contacts.\",\n \"type\": \"string\",\n \"example\": \"Bowman and Co\"\n },\n \"company_name\": {\n \"description\": \"Legal or registered contact's company name. Used for legal documents and formal communications. Max-length [200].\",\n \"type\": \"string\",\n \"example\": \"Bowman and Co\"\n },\n \"payment_terms\": {\n \"description\": \"Number of days allowed for payment after the invoice date.\",\n \"type\": \"integer\",\n \"example\": 15\n },\n \"payment_terms_label\": {\n \"description\": \"Human-readable label of payment terms displayed on invoices and other transactions. Max-length [200].\",\n \"type\": \"string\",\n \"example\": \"Net 15\"\n },\n \"contact_type\": {\n \"description\": \"Determines how the contact is treated in the system. Allowed values: customer, vendor.\",\n \"type\": \"string\",\n \"example\": \"customer\"\n },\n \"customer_sub_type\": {\n \"description\": \"For Customer Only : Additional classification for customers. Allowed values: individual, business.\",\n \"type\": \"string\",\n \"example\": \"business\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency assigned to this contact. The currency_id must correspond to a valid currency configuration in the system.\",\n \"type\": \"string\",\n \"example\": 460000000000097\n },\n \"opening_balances\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"location_id\": {\n \"description\": \"Unique identifier for the business location associated with this opening balance.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"exchange_rate\": {\n \"description\": \"Currency exchange rate used to convert opening balance to organization's base currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"opening_balance_amount\": {\n \"description\": \"Initial balance amount for the contact at the time of creation.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1200\n }\n }\n }\n },\n \"credit_limit\": {\n \"description\": \"For Customer Only : The maximum credit amount that can be allowed for the customer. Once the customer's outstanding receivables reach this limit, the system will restrict the customer from creating any further transactions.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1000\n },\n \"pricebook_id\": {\n \"description\": \"Pricebook id which is associated with the contact. Max-length [200].\",\n \"type\": \"string\",\n \"example\": 460000000000123\n },\n \"contact_number\": {\n \"description\": \"Contact number associated with the contact for internal tracking and identification purposes. Max-length [200].\",\n \"type\": \"string\",\n \"example\": \"CNT-001234\"\n },\n \"ignore_auto_number_generation\": {\n \"description\": \"Indicates whether the auto generation contact_number is ignored or not for the contact. Allowed values: true, false.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"tags\": {\n \"description\": \"Filter all your reports based on the tag\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 462000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 462000000002670\n }\n }\n }\n },\n \"website\": {\n \"description\": \"Official website URL of the contact.\",\n \"type\": \"string\",\n \"example\": \"www.bowmanfurniture.com\"\n },\n \"owner_id\": {\n \"description\": \"For Customer Only : Unique identifier for the user assigned as the owner of the contact. This field specifies which user in the organization is responsible for managing the business relationship with this contact.\",\n \"type\": \"string\",\n \"example\": 460000000016051\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field. It can hold any value from 1 to 10.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": \"GBGD078\"\n },\n \"label\": {\n \"description\": \"Label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"VAT ID\"\n }\n }\n }\n },\n \"billing_address\": {\n \"description\": \"Billing address information for the contact.\",\n \"type\": \"object\",\n \"properties\": {\n \"attention\": {\n \"description\": \"Attention for proper delivery and routing of business correspondence. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Mr.John\"\n },\n \"address\": {\n \"description\": \"Street 1 address for the contact. Max-length [500].\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd\"\n },\n \"street2\": {\n \"description\": \"Street 2 address for the contact. Max-length [255].\",\n \"type\": \"string\",\n \"example\": \"Suite 310\"\n },\n \"state_code\": {\n \"description\": \"State or province code for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"city\": {\n \"description\": \"City name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Postal or ZIP code for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Fax number for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n },\n \"phone\": {\n \"description\": \"The contact phone number associated with the address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n }\n }\n },\n \"shipping_address\": {\n \"description\": \"Shipping address information for the contact.\",\n \"type\": \"object\",\n \"properties\": {\n \"attention\": {\n \"description\": \"Attention for proper delivery and routing of business correspondence. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Mr.John\"\n },\n \"address\": {\n \"description\": \"Street 1 address for the contact. Max-length [500].\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd\"\n },\n \"street2\": {\n \"description\": \"Street 2 address for the contact. Max-length [255].\",\n \"type\": \"string\",\n \"example\": \"Suite 310\"\n },\n \"state_code\": {\n \"description\": \"State or province code for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"city\": {\n \"description\": \"City name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Postal or ZIP code for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country name for the address. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Fax number for the address. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n },\n \"phone\": {\n \"description\": \"The contact phone number associated with the address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n }\n }\n },\n \"contact_persons\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"ID of the contact person. For an existing contact person, pass the contact_person_id.\",\n \"type\": \"string\",\n \"example\": 460000000026051\n },\n \"salutation\": {\n \"description\": \"Salutation for the contact. Max-length [25]\",\n \"type\": \"string\",\n \"example\": \"Mr\"\n },\n \"first_name\": {\n \"description\": \"First name of the contact person. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Will\"\n },\n \"last_name\": {\n \"description\": \"Last name of the contact person. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Smith\"\n },\n \"email\": {\n \"description\": \"Email address of the contact person for business communications. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"willsmith@bowmanfurniture.com\"\n },\n \"phone\": {\n \"description\": \"Phone number of the contact person. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n },\n \"mobile\": {\n \"description\": \"Mobile number of the contact person. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"+1-4054439562\"\n },\n \"designation\": {\n \"description\": \"Designation of the contact person within the contact's company. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"Sales Executive\"\n },\n \"department\": {\n \"description\": \"Department of the contact person within the contact's company. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"Sales and Marketing\"\n },\n \"skype\": {\n \"description\": \"Skype username of the contact person. Max-length [50].\",\n \"type\": \"string\",\n \"example\": \"Zoho\"\n },\n \"is_primary_contact\": {\n \"description\": \"Indicates whether this contact person is the primary contact. Only one per contact. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"enable_portal\": {\n \"description\": \"Indicates whether the contact person should have access to the client portal. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_sms_enabled\": {\n \"description\": \"Whether SMS text messages are allowed for the contact person.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"SMS integration\"\n ]\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Whether WhatsApp messaging is allowed for the contact person.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"default_templates\": {\n \"type\": \"object\",\n \"properties\": {\n \"invoice_template_id\": {\n \"description\": \"Default invoice template id used for this customer while creating invoice.\",\n \"type\": \"string\",\n \"example\": 460000000052069\n },\n \"estimate_template_id\": {\n \"description\": \"Default estimate template id used for this customer while creating estimate.\",\n \"type\": \"string\",\n \"example\": 460000000000179\n },\n \"creditnote_template_id\": {\n \"description\": \"Default credit note template id used for this customer while creating credit note.\",\n \"type\": \"string\",\n \"example\": 460000000000211\n },\n \"purchaseorder_template_id\": {\n \"description\": \"Default purchase order template id used for this vendor while creating purchase order.\",\n \"type\": \"string\",\n \"example\": 460000000000213\n },\n \"salesorder_template_id\": {\n \"description\": \"Default sales order template id used for this customer while creating sales order.\",\n \"type\": \"string\",\n \"example\": 460000000000214\n },\n \"retainerinvoice_template_id\": {\n \"description\": \"Default retainer invoice template id used for this customer while creating retainer invoice.\",\n \"type\": \"string\",\n \"example\": 460000000000215\n },\n \"paymentthankyou_template_id\": {\n \"description\": \"Default payment thank you template id used for this contact while sending payment acknowledgment.\",\n \"type\": \"string\",\n \"example\": 460000000000216\n },\n \"retainerinvoice_paymentthankyou_template_id\": {\n \"description\": \"Default retainer invoice payment thank you template id used for this customer while sending payment acknowledgment for retainer invoices.\",\n \"type\": \"string\",\n \"example\": 460000000000217\n },\n \"invoice_email_template_id\": {\n \"description\": \"Default invoice email template id used for this customer while sending invoices.\",\n \"type\": \"string\",\n \"example\": 460000000052071\n },\n \"estimate_email_template_id\": {\n \"description\": \"Default estimate email template id used for this customer while sending estimates.\",\n \"type\": \"string\",\n \"example\": 460000000052073\n },\n \"creditnote_email_template_id\": {\n \"description\": \"Default credit note email template id used for this customer while sending credit notes.\",\n \"type\": \"string\",\n \"example\": 460000000052075\n },\n \"purchaseorder_email_template_id\": {\n \"description\": \"Default purchase order email template id used for this vendor while sending purchase order.\",\n \"type\": \"string\",\n \"example\": 460000000000218\n },\n \"salesorder_email_template_id\": {\n \"description\": \"Default sales order email template id used for this customer while sending sales order.\",\n \"type\": \"string\",\n \"example\": 460000000000219\n },\n \"retainerinvoice_email_template_id\": {\n \"description\": \"Default retainer invoice email template id used for this contact while sending retainer invoice.\",\n \"type\": \"string\",\n \"example\": 460000000000220\n },\n \"paymentthankyou_email_template_id\": {\n \"description\": \"Default payment thank you email template id used for this contact while sending payment acknowledgment.\",\n \"type\": \"string\",\n \"example\": 460000000000221\n },\n \"retainerinvoice_paymentthankyou_email_template_id\": {\n \"description\": \"Default retainer invoice payment thank you email template id used for this customer while sending payment acknowledgment for retainer invoices.\",\n \"type\": \"string\",\n \"example\": 460000000000222\n },\n \"statement_template_id\": {\n \"description\": \"Default statement template id used for this contact while creating statement.\",\n \"type\": \"string\",\n \"example\": 460000000000101\n },\n \"payment_remittance_email_template_id\": {\n \"description\": \"Default payment remittance email template id used for this contact while sending payment remittances.\",\n \"type\": \"string\",\n \"example\": 460000000000102\n },\n \"bill_template_id\": {\n \"description\": \"Default bill template id used for this vendor while creating bill.\",\n \"type\": \"string\",\n \"example\": 460000000000103\n }\n }\n },\n \"notes\": {\n \"description\": \"Additional comments or notes about the contact.\",\n \"type\": \"string\",\n \"example\": \"Payment option : Through check\"\n },\n \"vat_reg_no\": {\n \"description\": \"For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_reg_no\": {\n \"description\": \"For GCC Edition: 15 digit Tax Registration number of a contact with Tax treatment as vat_registered,gcc_vat_registered,dz_vat_registered.
For Mexico Edition: 12 digit Tax Registration number of a contact with Tax treatment as
home_country_mexico, border_region_mexico, non_mexico.
Consumers generic RFC: XAXX010101000, Overseas generic RFC: XEXX010101000.
For Kenya Edition: 11 digit Tax Registration number of a contact with Tax treatment as vat_registered
For SouthAfrica Edition: 10 digit Tax Registration number of a contact with Tax treatment as vat_registered\",\n \"type\": \"string\",\n \"example\": 12345678912345,\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"country_code\": {\n \"description\": \"For UK Edition: Two letter country code of a contact
For Avalara: Two letter country code for the customer country, if your customer is not in US. Refer [AvaTax Codes for Countries and States][2].
For GCC Editions : Two Letter country code for the GCC Country or the UAE emirate of the contact which will be considered as place of supply.
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"gcc\",\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"Tax treatment of the contact.
Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc,dz_vat_registered and dz_vat_not_registered
home_country_mexico (A business that is located within MX)
border_region_mexico (A business that is located in the northern and southern border regions in MX)
non_mexico (A business that is located outside MX).
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_certificate_number\": {\n \"description\": \"Tax Exemption Certificate number is issued by the Kenya Revenue Authority (KRA) to organizations or individuals who qualify for tax exemption\",\n \"type\": \"string\",\n \"example\": \"KRAEXM0043310521\",\n \"x-node_available_in\": [\n \"ke\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_regime\": {\n \"description\": \"Tax Regime of the contact.Allowed Values: general_legal_person, legal_entities_non_profit, resident_abroad, production_cooperative_societies, agricultural_livestock, optional_group_of_companies, coordinated, simplified_trust, wages_salaries_income, lease, property_disposal_acquisition, other_income, resident_abroad, divident_income, individual_business_professional, interest_income, income_obtaining_price, no_tax_obligation, tax_incorporation, income_through_technology_platform, simplified_trust.\",\n \"type\": \"string\",\n \"example\": \"general_legal_person\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"legal_name\": {\n \"description\": \"Official legal name of the contact as registered with tax authorities in Mexico.\",\n \"type\": \"string\",\n \"example\": \"ESCUELA KEMPER URGATE\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_tds_registered\": {\n \"description\": \"Indicates whether the contact is registered for Tax Deducted at Source (TDS) in Mexico.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment of the contact.Allowed Values:
uk (A business that is located in the UK.),
eu_vat_registered (A business that is reg for VAT and trade goods between Northern Ireland and EU. This node is available only for organizations enabled for NI protocal in VAT Settings.) and
overseas (A business that is located outside UK. Pre Brexit, this was split as eu_vat_registered, eu_vat_not_registered and non_eu ).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_contact\": {\n \"description\": \"State or union territory code where the contact is located for Indian tax purposes. (This node identifies the place of supply and source of supply when invoices/bills are raised for the customer/vendor respectively. This is not applicable for Overseas contacts)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15-digit GST identification number of the contact as issued by the Indian tax authorities.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Display name of the tax authority responsible for the customer's tax jurisdiction.\",\n \"type\": \"string\"\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique identifier for the tax exemption configuration assigned to this contact.\",\n \"type\": \"string\",\n \"example\": 11149000000061054,\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"au\",\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code identifier for the tax exemption assigned to the contact.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"au\",\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"Unique identifier for the tax authority responsible for the customer's tax jurisdiction. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": 11149000000061052,\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax or tax group assigned to the contact. Available only when is_taxable is true.\",\n \"type\": \"string\",\n \"example\": 11149000000061058,\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_taxable\": {\n \"description\": \"Indicates whether the customer is subject to tax collection. Tax-related fields are only available when this field is set to true. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"au\",\n \"in\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"facebook\": {\n \"description\": \"Facebook profile URL for the contact. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"zoho\"\n },\n \"twitter\": {\n \"description\": \"X profile URL for the contact. Max-length [100].\",\n \"type\": \"string\",\n \"example\": \"zoho\"\n },\n \"track_1099\": {\n \"description\": \"Boolean to track a contact for 1099 reporting.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id_type\": {\n \"description\": \"Tax ID type of the contact, it can be SSN, ATIN, ITIN or EIN.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id_value\": {\n \"description\": \"Tax ID of the contact.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateContactPerson.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateContactPerson.json new file mode 100644 index 00000000..b3a8b7c1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateContactPerson.json @@ -0,0 +1,415 @@ +{ + "name": "UpdateContactPerson", + "fully_qualified_name": "ZohoBooksApi.UpdateContactPerson@0.1.0", + "description": "Update an existing contact person's details.\n\nUse this tool to update the details of an existing contact person in the system. This is useful when changes to contact information are needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID representing the organization whose contact person is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "contact_person_identifier", + "required": true, + "description": "Unique identifier for the contact person to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact person." + }, + "inferrable": true, + "http_endpoint_parameter_name": "contact_person_id" + }, + { + "name": "contact_person_details", + "required": false, + "description": "JSON object containing the updated details for the contact person. Includes fields such as contact_id, salutation, first name, last name, email, phone, mobile, skype, designation, department, enable portal, is primary contact, and communication preferences. Each field has specific constraints like max length and expected data types.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact id of the contact" + }, + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]" + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person. Max-length [100]" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Max-length [50]" + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Max-length [50]" + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "skype address. Max-length [50]" + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "designation of a person. Max-length [50]" + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "department on which a person belongs. Max-length [50]" + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "option to enable the portal access. allowed values true,false" + }, + "is_primary_contact": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To mark contact person as primary for contact" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_contact_person'.", + "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": [ + "ZohoBooks.contacts.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/contacts/contactpersons/{contact_person_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "contact_person_id", + "tool_parameter_name": "contact_person_identifier", + "description": "Unique identifier of the contact person.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the contact person." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "contact_person_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "contact_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact id of the contact" + }, + "salutation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Salutation for the contact. Max-length [25]" + }, + "first_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "First name of the contact person. Max-length [100]" + }, + "last_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Last name of the contact person. Max-length [100]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the contact person. Max-length [100]" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Max-length [50]" + }, + "mobile": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Max-length [50]" + }, + "skype": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "skype address. Max-length [50]" + }, + "designation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "designation of a person. Max-length [50]" + }, + "department": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "department on which a person belongs. Max-length [50]" + }, + "enable_portal": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "option to enable the portal access. allowed values true,false" + }, + "is_primary_contact": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To mark contact person as primary for contact" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person." + } + }, + "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 \"required\": [\n \"contact_id\",\n \"first_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"contact_id\": {\n \"description\": \"Contact id of the contact\",\n \"type\": \"string\",\n \"example\": 460000000026049\n },\n \"salutation\": {\n \"description\": \"Salutation for the contact. Max-length [25]\",\n \"type\": \"string\",\n \"example\": \"Mr\"\n },\n \"first_name\": {\n \"description\": \"First name of the contact person. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Will\"\n },\n \"last_name\": {\n \"description\": \"Last name of the contact person. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Smith\"\n },\n \"email\": {\n \"description\": \"Email address of the contact person. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"willsmith@bowmanfurniture.com\"\n },\n \"phone\": {\n \"description\": \"Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n },\n \"mobile\": {\n \"description\": \"Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"+1-4054439562\"\n },\n \"skype\": {\n \"description\": \"skype address. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"zoho\"\n },\n \"designation\": {\n \"description\": \"designation of a person. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"Sales Engineer\"\n },\n \"department\": {\n \"description\": \"department on which a person belongs. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"Sales\"\n },\n \"enable_portal\": {\n \"description\": \"option to enable the portal access. allowed values true,false\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_primary_contact\": {\n \"description\": \"To mark contact person as primary for contact\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteBillingAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteBillingAddress.json new file mode 100644 index 00000000..f103b4e7 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteBillingAddress.json @@ -0,0 +1,285 @@ +{ + "name": "UpdateCreditNoteBillingAddress", + "fully_qualified_name": "ZohoBooksApi.UpdateCreditNoteBillingAddress@0.1.0", + "description": "Update the billing address for a specific credit note.\n\nThis tool updates the billing address associated with an existing credit note in Zoho Books. It should be called when a change in billing information for a specific credit note is required.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to specify which organization's data is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_identifier", + "required": true, + "description": "A unique identifier for the credit note to update its billing address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "billing_address_details", + "required": false, + "description": "JSON object containing the updated billing address details: address, city, state, zip, country, and fax.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_credit_note_billing_address'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/address/billing", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_identifier", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "billing_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "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 \"address\": {\n \"description\": \"Billing address for the invoice\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd, Suite 310\"\n },\n \"city\": {\n \"description\": \"City of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Zip code of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"USA\"\n },\n \"fax\": {\n \"description\": \"Customer's fax number.\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteDetails.json new file mode 100644 index 00000000..86714aa9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteDetails.json @@ -0,0 +1,1300 @@ +{ + "name": "UpdateCreditNoteDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateCreditNoteDetails@0.1.0", + "description": "Update details of an existing credit note.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's credit note to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_unique_identifier", + "required": true, + "description": "Unique identifier for the credit note to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "credit_note_details", + "required": false, + "description": "A JSON object containing details of the credit note including customer ID, currency, date, line items, etc. Must follow the specified schema for correct processing.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer contact. Retrieve customer IDs from the Get Customers API endpoint in the contacts section. This ID links the credit note to the specific customer record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the credit note. Can differ from customer currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "is_draft": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to create the credit note in draft status. Draft credit notes are not finalized and can be modified before sending to customers." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search credit notes by credit note line item id." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter order of the item" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter discount percentage." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID to denote the TDS tax associated to the creditnote" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique code of the tax exemption." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for the line item. Standard values: goods or services. For South Africa: service, goods, capital_service, and capital_goods." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter custom field information" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location." + }, + "serial_numbers": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Serial numbers of the items being credited. Used for tracking specific units of inventory or equipment. Important for warranty and return tracking." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the project associated with the line item. Links the credit to a specific project for project-based accounting and reporting." + } + }, + "description": "Line items of a credit note." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "creditnote_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique credit note number displayed in the interface. Auto-generated with CN prefix unless ignore_auto_number_generation is true. Max-Length [100]" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the credit note .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type.
Allowed values: credit_note, debit_note, return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to provide a custom credit note number instead of auto-generated CN prefix. When true, you must specify creditnote_number manually." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional fields for the Credit-Notes." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the credit note. Displayed on the credit note document for customer reference. Max-length [5000]" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions displayed on the credit note document. Include payment terms, return policies, or other business conditions. Max-length [10000]" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the credit note PDF template. Retrieve template IDs from the List Credit Note Templates API endpoint. Determines the visual layout and branding of the credit note document." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to provide your own credit note number instead of using the auto-generated one.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true if you need to provide your own credit note number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_credit_note'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Set to true if you need to provide your own credit note number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true if you need to provide your own credit note number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_unique_identifier", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "credit_note_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer contact. Retrieve customer IDs from the Get Customers API endpoint in the contacts section. This ID links the credit note to the specific customer record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the credit note. Can differ from customer currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "is_draft": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to create the credit note in draft status. Draft credit notes are not finalized and can be modified before sending to customers." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search credit notes by credit note line item id." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter order of the item" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter discount percentage." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID to denote the TDS tax associated to the creditnote" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique code of the tax exemption." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for the line item. Standard values: goods or services. For South Africa: service, goods, capital_service, and capital_goods." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter custom field information" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location." + }, + "serial_numbers": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Serial numbers of the items being credited. Used for tracking specific units of inventory or equipment. Important for warranty and return tracking." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the project associated with the line item. Links the credit to a specific project for project-based accounting and reporting." + } + }, + "description": "Line items of a credit note." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "creditnote_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique credit note number displayed in the interface. Auto-generated with CN prefix unless ignore_auto_number_generation is true. Max-Length [100]" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the credit note .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type.
Allowed values: credit_note, debit_note, return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to provide a custom credit note number instead of auto-generated CN prefix. When true, you must specify creditnote_number manually." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional fields for the Credit-Notes." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the credit note. Displayed on the credit note document for customer reference. Max-length [5000]" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions displayed on the credit note document. Include payment terms, return policies, or other business conditions. Max-length [10000]" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the credit note PDF template. Retrieve template IDs from the List Credit Note Templates API endpoint. Determines the visual layout and branding of the credit note document." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + } + }, + "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 \"required\": [\n \"customer_id\",\n \"date\",\n \"creditnote_number\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier for the customer contact. Retrieve customer IDs from the Get Customers API endpoint in the contacts section. This ID links the credit note to the specific customer record.\",\n \"type\": \"string\",\n \"example\": \"903000000000099\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the credit note. Can differ from customer currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section.\",\n \"type\": \"string\",\n \"example\": \"982000000567240\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"date\": {\n \"description\": \"The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations.\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"is_draft\": {\n \"description\": \"Set to true to create the credit note in draft status. Draft credit notes are not finalized and can be modified before sending to customers.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs.\",\n \"type\": \"string\",\n \"example\": \"5.5\"\n },\n \"line_items\": {\n \"description\": \"Line items of a credit note.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service.\",\n \"type\": \"string\",\n \"example\": \"90300000081501\"\n },\n \"line_item_id\": {\n \"description\": \"Search credit notes by credit note line item id.\",\n \"type\": \"string\",\n \"example\": 903000006245\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes.\",\n \"type\": \"string\",\n \"example\": \"903000000000388\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"Basic Monthly\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n },\n \"item_order\": {\n \"description\": \"Enter order of the item\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"quantity\": {\n \"description\": \"Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item.\",\n \"type\": \"integer\",\n \"format\": \"int32\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of the line item. E.g: kgs, Nos.\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"discount\": {\n \"description\": \"Enter discount percentage.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item.\",\n \"type\": \"string\",\n \"example\": \"903000000000356\"\n },\n \"tds_tax_id\": {\n \"description\": \"Unique ID to denote the TDS tax associated to the creditnote\",\n \"type\": \"string\",\n \"example\": \"903000000000357\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Unique code of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"GST FREE\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of product or service for the line item. Standard values: goods or services. For South Africa: service, goods, capital_service, and capital_goods.\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"box\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_custom_fields\": {\n \"description\": \"Enter custom field information\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"location_name\": {\n \"description\": \"Name of the location.\",\n \"type\": \"string\"\n },\n \"serial_numbers\": {\n \"description\": \"Serial numbers of the items being credited. Used for tracking specific units of inventory or equipment. Important for warranty and return tracking.\",\n \"type\": \"string\"\n },\n \"project_id\": {\n \"description\": \"Unique identifier for the project associated with the line item. Links the credit to a specific project for project-based accounting and reporting.\",\n \"type\": \"string\",\n \"example\": 90300000087378\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"creditnote_number\": {\n \"description\": \"Unique credit note number displayed in the interface. Auto-generated with CN prefix unless ignore_auto_number_generation is true. Max-Length [100]\",\n \"type\": \"string\",\n \"example\": \"CN-29\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the credit note .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_usage\": {\n \"description\": \"Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll.\",\n \"type\": \"string\",\n \"example\": \"acquisition_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_reference_type\": {\n \"description\": \"Choose CFDI Reference Type.
Allowed values: credit_note, debit_note, return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance.\",\n \"type\": \"string\",\n \"example\": \"return_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"ignore_auto_number_generation\": {\n \"description\": \"Set to true to provide a custom credit note number instead of auto-generated CN prefix. When true, you must specify creditnote_number manually.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"reference_number\": {\n \"description\": \"Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"custom_fields\": {\n \"description\": \"Additional fields for the Credit-Notes.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"notes\": {\n \"description\": \"Additional notes or comments for the credit note. Displayed on the credit note document for customer reference. Max-length [5000]\",\n \"type\": \"string\",\n \"example\": \"Offer for the referral\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions displayed on the credit note document. Include payment terms, return policies, or other business conditions. Max-length [10000]\",\n \"type\": \"string\",\n \"example\": \"\"\n },\n \"template_id\": {\n \"description\": \"Unique identifier for the credit note PDF template. Retrieve template IDs from the List Credit Note Templates API endpoint. Determines the visual layout and branding of the credit note document.\",\n \"type\": \"string\",\n \"example\": \"90300000001336\"\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item.\",\n \"type\": \"string\",\n \"example\": \"903000000000356\"\n },\n \"tax_authority_id\": {\n \"description\": \"Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"overseas\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": \"fasle\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"item_id\": {\n \"description\": \"Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service.\",\n \"type\": \"string\",\n \"example\": \"90300000081501\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes.\",\n \"type\": \"string\",\n \"example\": \"903000000000388\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"Basic Monthly\"\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n },\n \"unit\": {\n \"description\": \"Unit of the line item. E.g: kgs, Nos.\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"quantity\": {\n \"description\": \"Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item.\",\n \"type\": \"integer\",\n \"format\": \"int32\",\n \"example\": 1\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteShippingAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteShippingAddress.json new file mode 100644 index 00000000..6e2fd00a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteShippingAddress.json @@ -0,0 +1,285 @@ +{ + "name": "UpdateCreditNoteShippingAddress", + "fully_qualified_name": "ZohoBooksApi.UpdateCreditNoteShippingAddress@0.1.0", + "description": "Updates the shipping address of an existing credit note.\n\nUse this tool to update the shipping address for a specific credit note. Call this when you need to change the recipient's address on a credit note document.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization to which the credit note belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to update the shipping address for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "shipping_address_details", + "required": false, + "description": "JSON object containing shipping address details. Include 'address', 'city', 'state', 'zip', 'country', and 'fax'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_credit_note_shipping_address'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/address/shipping", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "shipping_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the invoice" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "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 \"address\": {\n \"description\": \"Billing address for the invoice\",\n \"type\": \"string\",\n \"example\": \"Suite 125, McMillan Avenue\"\n },\n \"city\": {\n \"description\": \"City of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"San Francisco\"\n },\n \"state\": {\n \"description\": \"State of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Zip code of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": 94134\n },\n \"country\": {\n \"description\": \"Country of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"USA\"\n },\n \"fax\": {\n \"description\": \"Customer's fax number.\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteTemplate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteTemplate.json new file mode 100644 index 00000000..65708f93 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteTemplate.json @@ -0,0 +1,187 @@ +{ + "name": "UpdateCreditNoteTemplate", + "fully_qualified_name": "ZohoBooksApi.UpdateCreditNoteTemplate@0.1.0", + "description": "Updates the PDF template for a specified credit note.\n\nUse this tool to change the PDF template associated with a specific credit note by providing the credit note ID and the template ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "Unique identifier for the organization. Required to specify which organization's credit note template will be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_id", + "required": true, + "description": "Unique identifier of the credit note to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "credit_note_template_id", + "required": true, + "description": "Unique identifier of the credit note template to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_credit_note_template'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/templates/{template_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_id", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "template_id", + "tool_parameter_name": "credit_note_template_id", + "description": "Unique identifier of the credit note template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note template." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteWithCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteWithCustomField.json new file mode 100644 index 00000000..9384037b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCreditNoteWithCustomField.json @@ -0,0 +1,1333 @@ +{ + "name": "UpdateCreditNoteWithCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateCreditNoteWithCustomField@0.1.0", + "description": "Update or create a credit note using a custom field.\n\nUse this tool to modify an existing credit note or create a new one with unique values in custom fields. If the specified unique value doesn't match any existing credit note and upsert is enabled, a new credit note will be created given the necessary details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization to which the credit note belongs. This identifies the target organization for the update or creation operation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_key", + "required": true, + "description": "The API name of the unique custom field used to identify the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "custom_field_unique_value", + "required": true, + "description": "The unique value for the custom field used to identify the credit note to update or create. Ensure this matches the specific custom field's unique value constraints.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "credit_note_details", + "required": false, + "description": "JSON object containing comprehensive details required to update or create a credit note, including customer ID, currency, contact persons, line items, important dates, and other relevant fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer contact. Retrieve customer IDs from the Get Customers API endpoint in the contacts section. This ID links the credit note to the specific customer record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the credit note. Can differ from customer currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "is_draft": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to create the credit note in draft status. Draft credit notes are not finalized and can be modified before sending to customers." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search credit notes by credit note line item id." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter order of the item" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter discount percentage." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID to denote the TDS tax associated to the creditnote" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique code of the tax exemption." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for the line item. Standard values: goods or services. For South Africa: service, goods, capital_service, and capital_goods." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter custom field information" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location." + }, + "serial_numbers": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Serial numbers of the items being credited. Used for tracking specific units of inventory or equipment. Important for warranty and return tracking." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the project associated with the line item. Links the credit to a specific project for project-based accounting and reporting." + } + }, + "description": "Line items of a credit note." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "creditnote_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique credit note number displayed in the interface. Auto-generated with CN prefix unless ignore_auto_number_generation is true. Max-Length [100]" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the credit note .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type.
Allowed values: credit_note, debit_note, return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to provide a custom credit note number instead of auto-generated CN prefix. When true, you must specify creditnote_number manually." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional fields for the Credit-Notes." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the credit note. Displayed on the credit note document for customer reference. Max-length [5000]" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions displayed on the credit note document. Include payment terms, return policies, or other business conditions. Max-length [10000]" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the credit note PDF template. Retrieve template IDs from the List Credit Note Templates API endpoint. Determines the visual layout and branding of the credit note document." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_new_credit_note_if_not_found", + "required": false, + "description": "Set to true to create a new credit note if the unique custom field value isn't found in existing credit notes.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_credit_note_using_custom_field'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_key", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "custom_field_unique_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_new_credit_note_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "credit_note_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer contact. Retrieve customer IDs from the Get Customers API endpoint in the contacts section. This ID links the credit note to the specific customer record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the credit note. Can differ from customer currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "is_draft": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to create the credit note in draft status. Draft credit notes are not finalized and can be modified before sending to customers." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search credit notes by credit note line item id." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter order of the item" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter discount percentage." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID to denote the TDS tax associated to the creditnote" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique code of the tax exemption." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for the line item. Standard values: goods or services. For South Africa: service, goods, capital_service, and capital_goods." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter custom field information" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location." + }, + "serial_numbers": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Serial numbers of the items being credited. Used for tracking specific units of inventory or equipment. Important for warranty and return tracking." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the project associated with the line item. Links the credit to a specific project for project-based accounting and reporting." + } + }, + "description": "Line items of a credit note." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item." + }, + "creditnote_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique credit note number displayed in the interface. Auto-generated with CN prefix unless ignore_auto_number_generation is true. Max-Length [100]" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the credit note .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type.
Allowed values: credit_note, debit_note, return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "ignore_auto_number_generation": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to provide a custom credit note number instead of auto-generated CN prefix. When true, you must specify creditnote_number manually." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional fields for the Credit-Notes." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the credit note. Displayed on the credit note document for customer reference. Max-length [5000]" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions displayed on the credit note document. Include payment terms, return policies, or other business conditions. Max-length [10000]" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the credit note PDF template. Retrieve template IDs from the List Credit Note Templates API endpoint. Determines the visual layout and branding of the credit note document." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item. E.g: kgs, Nos." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + } + }, + "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 \"required\": [\n \"customer_id\",\n \"date\",\n \"creditnote_number\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier for the customer contact. Retrieve customer IDs from the Get Customers API endpoint in the contacts section. This ID links the credit note to the specific customer record.\",\n \"type\": \"string\",\n \"example\": \"903000000000099\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the credit note. Can differ from customer currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section.\",\n \"type\": \"string\",\n \"example\": \"982000000567240\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"date\": {\n \"description\": \"The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations.\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"is_draft\": {\n \"description\": \"Set to true to create the credit note in draft status. Draft credit notes are not finalized and can be modified before sending to customers.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs.\",\n \"type\": \"string\",\n \"example\": \"5.5\"\n },\n \"line_items\": {\n \"description\": \"Line items of a credit note.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service.\",\n \"type\": \"string\",\n \"example\": \"90300000081501\"\n },\n \"line_item_id\": {\n \"description\": \"Search credit notes by credit note line item id.\",\n \"type\": \"string\",\n \"example\": 903000006245\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes.\",\n \"type\": \"string\",\n \"example\": \"903000000000388\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"Basic Monthly\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n },\n \"item_order\": {\n \"description\": \"Enter order of the item\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"quantity\": {\n \"description\": \"Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item.\",\n \"type\": \"integer\",\n \"format\": \"int32\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of the line item. E.g: kgs, Nos.\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"discount\": {\n \"description\": \"Enter discount percentage.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item.\",\n \"type\": \"string\",\n \"example\": \"903000000000356\"\n },\n \"tds_tax_id\": {\n \"description\": \"Unique ID to denote the TDS tax associated to the creditnote\",\n \"type\": \"string\",\n \"example\": \"903000000000357\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Unique code of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"GST FREE\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of product or service for the line item. Standard values: goods or services. For South Africa: service, goods, capital_service, and capital_goods.\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"box\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_custom_fields\": {\n \"description\": \"Enter custom field information\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"location_name\": {\n \"description\": \"Name of the location.\",\n \"type\": \"string\"\n },\n \"serial_numbers\": {\n \"description\": \"Serial numbers of the items being credited. Used for tracking specific units of inventory or equipment. Important for warranty and return tracking.\",\n \"type\": \"string\"\n },\n \"project_id\": {\n \"description\": \"Unique identifier for the project associated with the line item. Links the credit to a specific project for project-based accounting and reporting.\",\n \"type\": \"string\",\n \"example\": 90300000087378\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location associated with the line item. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules for this line item.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"creditnote_number\": {\n \"description\": \"Unique credit note number displayed in the interface. Auto-generated with CN prefix unless ignore_auto_number_generation is true. Max-Length [100]\",\n \"type\": \"string\",\n \"example\": \"CN-29\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the credit note .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_usage\": {\n \"description\": \"Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll.\",\n \"type\": \"string\",\n \"example\": \"acquisition_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_reference_type\": {\n \"description\": \"Choose CFDI Reference Type.
Allowed values: credit_note, debit_note, return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance.\",\n \"type\": \"string\",\n \"example\": \"return_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"ignore_auto_number_generation\": {\n \"description\": \"Set to true to provide a custom credit note number instead of auto-generated CN prefix. When true, you must specify creditnote_number manually.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"reference_number\": {\n \"description\": \"Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"custom_fields\": {\n \"description\": \"Additional fields for the Credit-Notes.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"notes\": {\n \"description\": \"Additional notes or comments for the credit note. Displayed on the credit note document for customer reference. Max-length [5000]\",\n \"type\": \"string\",\n \"example\": \"Offer for the referral\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions displayed on the credit note document. Include payment terms, return policies, or other business conditions. Max-length [10000]\",\n \"type\": \"string\",\n \"example\": \"\"\n },\n \"template_id\": {\n \"description\": \"Unique identifier for the credit note PDF template. Retrieve template IDs from the List Credit Note Templates API endpoint. Determines the visual layout and branding of the credit note document.\",\n \"type\": \"string\",\n \"example\": \"90300000001336\"\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this specific line item.\",\n \"type\": \"string\",\n \"example\": \"903000000000356\"\n },\n \"tax_authority_id\": {\n \"description\": \"Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"overseas\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": \"fasle\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"item_id\": {\n \"description\": \"Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service.\",\n \"type\": \"string\",\n \"example\": \"90300000081501\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes.\",\n \"type\": \"string\",\n \"example\": \"903000000000388\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item. Describes the product or service being credited. This name is displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"Basic Monthly\"\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n },\n \"unit\": {\n \"description\": \"Unit of the line item. E.g: kgs, Nos.\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"quantity\": {\n \"description\": \"Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item.\",\n \"type\": \"integer\",\n \"format\": \"int32\",\n \"example\": 1\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCurrencyDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCurrencyDetails.json new file mode 100644 index 00000000..a57d158c --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCurrencyDetails.json @@ -0,0 +1,253 @@ +{ + "name": "UpdateCurrencyDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateCurrencyDetails@0.1.0", + "description": "Update the details of a currency in Zoho Books.\n\nUse this tool to update information for a specific currency in Zoho Books by providing the currency ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the currency details are being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_unique_identifier", + "required": true, + "description": "Unique identifier of the currency to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + }, + { + "name": "currency_details", + "required": false, + "description": "A JSON object containing currency_code, currency_symbol, price_precision, and currency_format to update the currency details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique standard code for the currency. Max-len [100]" + }, + "currency_symbol": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique symbol for the currency. Max-len [4]" + }, + "price_precision": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The precision for the price" + }, + "currency_format": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The format for the currency to be displayed. Max-len [100]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_currency'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies/{currency_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "currency_unique_identifier", + "description": "Unique identifier of the currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "currency_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique standard code for the currency. Max-len [100]" + }, + "currency_symbol": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique symbol for the currency. Max-len [4]" + }, + "price_precision": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The precision for the price" + }, + "currency_format": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The format for the currency to be displayed. Max-len [100]" + } + }, + "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 \"required\": [\n \"currency_code\",\n \"currency_format\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"currency_code\": {\n \"description\": \"A unique standard code for the currency. Max-len [100]\",\n \"type\": \"string\",\n \"example\": \"AUD\"\n },\n \"currency_symbol\": {\n \"description\": \"A unique symbol for the currency. Max-len [4]\",\n \"type\": \"string\",\n \"example\": \"$\"\n },\n \"price_precision\": {\n \"description\": \"The precision for the price\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"currency_format\": {\n \"description\": \"The format for the currency to be displayed. Max-len [100]\",\n \"type\": \"string\",\n \"example\": \"1,234,567.89\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomFieldsInBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomFieldsInBill.json new file mode 100644 index 00000000..004ad4fe --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomFieldsInBill.json @@ -0,0 +1,253 @@ +{ + "name": "UpdateCustomFieldsInBill", + "fully_qualified_name": "ZohoBooksApi.UpdateCustomFieldsInBill@0.1.0", + "description": "Update custom fields in existing bills.\n\nThis tool is used to update the value of custom fields in existing bills. It should be called when you need to change or add information to the custom fields of a specific bill identified by its bill ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the bill's custom fields are being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "bill_identifier", + "required": true, + "description": "Unique identifier of the bill to update its custom fields.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "bill_id" + }, + { + "name": "custom_fields_data", + "required": false, + "description": "An array of JSON objects, each representing a custom field. Each object should contain 'custom_field_id' (integer), 'index' (integer), 'label' (string), and 'value' (string).", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_custom_fields_in_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/bill/{bill_id}/customfields", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "bill_id", + "tool_parameter_name": "bill_identifier", + "description": "Unique identifier of the bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the bill." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_fields_data", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "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\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomFieldsPurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomFieldsPurchaseOrder.json new file mode 100644 index 00000000..3073a7eb --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomFieldsPurchaseOrder.json @@ -0,0 +1,221 @@ +{ + "name": "UpdateCustomFieldsPurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.UpdateCustomFieldsPurchaseOrder@0.1.0", + "description": "Update custom field values in purchase orders.\n\nThis tool updates the values of custom fields within existing purchase orders in Zoho Books. It should be called when there is a need to modify or update custom information in a specific purchase order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization associated with the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "A unique identifier for the purchase order to update custom fields.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "custom_fields_updates", + "required": false, + "description": "An array of custom field updates, each containing 'customfield_id' and 'value'.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_custom_fields_in_purchase_order'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorder/{purchaseorder_id}/customfields", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_fields_updates", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "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 \"description\": \"Custom fields for purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomModuleRecord.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomModuleRecord.json new file mode 100644 index 00000000..65c4dd67 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomModuleRecord.json @@ -0,0 +1,254 @@ +{ + "name": "UpdateCustomModuleRecord", + "fully_qualified_name": "ZohoBooksApi.UpdateCustomModuleRecord@0.1.0", + "description": "Update an existing custom module in Zoho Books.\n\nUse this tool to update an existing custom module record in Zoho Books by specifying the module name and module ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "module_name", + "required": true, + "description": "The name of the custom module to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_name" + }, + { + "name": "custom_module_id", + "required": true, + "description": "The ID of the custom module to be updated in Zoho Books.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom Module ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_id" + }, + { + "name": "custom_module_record_update", + "required": false, + "description": "JSON object containing fields to update, like record name and custom field values.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "record_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the record" + }, + "cf_debt_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom Field" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_custom_module_record'.", + "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": [ + "ZohoBooks.custommodules.ALL" + ] + } + }, + "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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/{module_name}/{module_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_name", + "tool_parameter_name": "module_name", + "description": "Module Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_id", + "tool_parameter_name": "custom_module_id", + "description": "Custom Module ID", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom Module ID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_module_record_update", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "record_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the record" + }, + "cf_debt_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom Field" + } + }, + "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 \"required\": [\n \"record_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"record_name\": {\n \"description\": \"Name of the record\",\n \"type\": \"string\",\n \"example\": \"Alice\"\n },\n \"cf_debt_amount\": {\n \"description\": \"Value of the custom Field\",\n \"type\": \"number\",\n \"example\": 10000\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomModuleRecords.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomModuleRecords.json new file mode 100644 index 00000000..8b44cb44 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomModuleRecords.json @@ -0,0 +1,237 @@ +{ + "name": "UpdateCustomModuleRecords", + "fully_qualified_name": "ZohoBooksApi.UpdateCustomModuleRecords@0.1.0", + "description": "Updates existing custom module records in bulk.\n\nUse this tool to update multiple records in a custom module efficiently. This is useful for making uniform changes across a set of records within a specified module.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization that owns the module records to be updated. This ID is required to specify which organization's records are being modified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "module_name", + "required": true, + "description": "Specify the name of the custom module to update records in bulk.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "module_name" + }, + { + "name": "custom_module_records_update_payload", + "required": false, + "description": "JSON payload containing the updated data for custom module records. Include fields like \"cf_debt_amount\", \"module_record_id\", and \"record_name\" for each record.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cf_debt_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom Field" + }, + "module_record_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reeccord IDs" + }, + "record_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the record" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'bulk_update_custom_module_records'.", + "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": [ + "ZohoBooks.custommodules.ALL" + ] + } + }, + "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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/{module_name}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "module_name", + "tool_parameter_name": "module_name", + "description": "Module Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Module Name" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_module_records_update_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cf_debt_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom Field" + }, + "module_record_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reeccord IDs" + }, + "record_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the record" + } + }, + "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 \"required\": [\n \"record_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"cf_debt_amount\": {\n \"description\": \"Value of the custom Field\",\n \"type\": \"number\",\n \"example\": 10000\n },\n \"module_record_id\": {\n \"description\": \"Reeccord IDs\",\n \"type\": \"string\",\n \"example\": \"460000000639128,460000000639129\"\n },\n \"record_name\": {\n \"description\": \"Name of the record\",\n \"type\": \"string\",\n \"example\": \"Alice\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomerDebitNote.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomerDebitNote.json new file mode 100644 index 00000000..f4d4ac48 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomerDebitNote.json @@ -0,0 +1,646 @@ +{ + "name": "UpdateCustomerDebitNote", + "fully_qualified_name": "ZohoBooksApi.UpdateCustomerDebitNote@0.1.0", + "description": "Update an existing customer debit note.\n\nUse this tool to update details of an existing customer debit note in Zoho Books. Remove a line item by omitting it from the line_items list.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Organization ID for the request within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "debit_note_unique_identifier", + "required": true, + "description": "Unique identifier for the debit note to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the debit note" + }, + "inferrable": true, + "http_endpoint_parameter_name": "debit_note_id" + }, + { + "name": "debit_note_request_body", + "required": false, + "description": "JSON object containing details like customer_id, type, currency_id, invoice_number, template_id, date, payment_terms, payment_terms_label, due_date, discount, exchange_rate, location_id, custom_fields, and line_items for updating a customer debit note.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "debit_note" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the document. For customer debit notes, this should be debit_note" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency" + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit note number" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Template ID" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit note date" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms in days" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms label" + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Due date" + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Item ID" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Product type" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC code" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity" + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Item total" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to ignore automatic debit note number generation, requiring manual input of the debit note number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto debit note number generation for this debit note. This mandates the debit note number. Allowed values true and false" + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_customer_debit_note'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{debit_note_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "Organization ID for the request", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organization ID for the request" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto debit note number generation for this debit note. This mandates the debit note number. Allowed values true and false", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto debit note number generation for this debit note. This mandates the debit note number. Allowed values true and false" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "debit_note_id", + "tool_parameter_name": "debit_note_unique_identifier", + "description": "Unique identifier for the debit note", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the debit note" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "debit_note_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "debit_note" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the document. For customer debit notes, this should be debit_note" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency" + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit note number" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Template ID" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit note date" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms in days" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Payment terms label" + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Due date" + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Item ID" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Product type" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC code" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity" + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Item total" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier for the customer\",\n \"example\": \"982000000567001\"\n },\n \"type\": {\n \"type\": \"string\",\n \"description\": \"Type of the document. For customer debit notes, this should be debit_note\",\n \"example\": \"debit_note\",\n \"enum\": [\n \"debit_note\"\n ]\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier for the currency\",\n \"example\": \"982000000000001\"\n },\n \"invoice_number\": {\n \"type\": \"string\",\n \"description\": \"Debit note number\",\n \"example\": \"DN-00001\"\n },\n \"template_id\": {\n \"type\": \"string\",\n \"description\": \"Template ID\",\n \"example\": \"982000000000143\"\n },\n \"date\": {\n \"type\": \"string\",\n \"description\": \"Debit note date\",\n \"example\": \"2013-11-17\"\n },\n \"payment_terms\": {\n \"type\": \"integer\",\n \"description\": \"Payment terms in days\",\n \"example\": 15\n },\n \"payment_terms_label\": {\n \"type\": \"string\",\n \"description\": \"Payment terms label\",\n \"example\": \"Net 15\"\n },\n \"due_date\": {\n \"type\": \"string\",\n \"description\": \"Due date\",\n \"example\": \"2013-12-02\"\n },\n \"discount\": {\n \"type\": \"number\",\n \"description\": \"Discount amount\",\n \"example\": 0\n },\n \"exchange_rate\": {\n \"type\": \"number\",\n \"description\": \"Exchange rate\",\n \"example\": 1\n },\n \"location_id\": {\n \"type\": \"string\",\n \"description\": \"Location ID\",\n \"example\": \"460000000038080\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"item_id\"\n ],\n \"properties\": {\n \"item_id\": {\n \"type\": \"string\",\n \"description\": \"Item ID\",\n \"example\": \"982000000030049\"\n },\n \"product_type\": {\n \"type\": \"string\",\n \"description\": \"Product type\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"type\": \"string\",\n \"description\": \"HSN or SAC code\",\n \"example\": \"80540\"\n },\n \"location_id\": {\n \"type\": \"string\",\n \"description\": \"Location ID\",\n \"example\": \"460000000038080\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Description\",\n \"example\": \"Desktop Units\"\n },\n \"rate\": {\n \"type\": \"number\",\n \"description\": \"Rate\",\n \"example\": 20\n },\n \"quantity\": {\n \"type\": \"number\",\n \"description\": \"Quantity\",\n \"example\": 2\n },\n \"unit\": {\n \"type\": \"string\",\n \"description\": \"Unit\",\n \"example\": \"Nos\"\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"description\": \"Tax ID\",\n \"example\": \"982000000567104\"\n },\n \"item_total\": {\n \"type\": \"number\",\n \"description\": \"Item total\",\n \"example\": 40\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomerPaymentCustomFields.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomerPaymentCustomFields.json new file mode 100644 index 00000000..d27fbfae --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomerPaymentCustomFields.json @@ -0,0 +1,221 @@ +{ + "name": "UpdateCustomerPaymentCustomFields", + "fully_qualified_name": "ZohoBooksApi.UpdateCustomerPaymentCustomFields@0.1.0", + "description": "Update custom fields in existing customer payments.\n\nUse this tool to update the values of custom fields in an existing customer payment in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to which the customer payment belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "customer_payment_identifier", + "required": true, + "description": "The unique identifier for the customer payment you wish to update custom fields for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_payment_id" + }, + { + "name": "custom_fields_data", + "required": false, + "description": "An array of JSON objects, each containing 'customfield_id' and 'value' to update in the customer payment.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_custom_fields_in_customer_payment'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayment/{customer_payment_id}/customfields", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_payment_id", + "tool_parameter_name": "customer_payment_identifier", + "description": "Unique identifier of the customer payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_fields_data", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "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 \"description\": \"Custom fields for an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": 129890\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomerPaymentInfo.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomerPaymentInfo.json new file mode 100644 index 00000000..ebea4fa1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateCustomerPaymentInfo.json @@ -0,0 +1,529 @@ +{ + "name": "UpdateCustomerPaymentInfo", + "fully_qualified_name": "ZohoBooksApi.UpdateCustomerPaymentInfo@0.1.0", + "description": "Update an existing payment information.\n\nUse this tool to update payment information for a customer when any corrections or modifications are needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the payment update is requested.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_unique_identifier", + "required": true, + "description": "The unique identifier for the payment to be updated. Use this to specify which payment you want to modify.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "payment_update_details", + "required": false, + "description": "JSON object containing details such as customer ID, payment mode, amount, date, and invoices for updating the payment.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer involved in the payment." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment is made. This can be check, cash, creditcard, banktransfer, bankremittance, autotransaction or others. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + }, + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + } + }, + "description": "List of invoices associated with the payment. Each invoice object contains invoice_id, invoice_number, date, invoice_amount, amount_applied and balance_amount." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Denotes any additional bank charges." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "description": "Additional fields for the payments." + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount withheld for tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/bank account the payment has to be deposited." + }, + "retainerinvoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the retainer invoice associated with the payment" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_customer_payment'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments/{payment_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_unique_identifier", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "payment_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer involved in the payment." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment is made. This can be check, cash, creditcard, banktransfer, bankremittance, autotransaction or others. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + }, + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + } + }, + "description": "List of invoices associated with the payment. Each invoice object contains invoice_id, invoice_number, date, invoice_amount, amount_applied and balance_amount." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Denotes any additional bank charges." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "description": "Additional fields for the payments." + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount withheld for tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/bank account the payment has to be deposited." + }, + "retainerinvoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the retainer invoice associated with the payment" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"payment_mode\",\n \"amount\",\n \"invoices\",\n \"invoice_id\",\n \"amount_applied\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Customer ID of the customer involved in the payment.\",\n \"type\": \"string\",\n \"example\": \"903000000000099\"\n },\n \"payment_mode\": {\n \"description\": \"Mode through which payment is made. This can be check, cash, creditcard, banktransfer, bankremittance, autotransaction or others. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"amount\": {\n \"description\": \"Amount paid in the respective payment.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"date\": {\n \"description\": \"Date on which payment is made. Format [yyyy-mm-dd]\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"reference_number\": {\n \"description\": \"Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"description\": {\n \"description\": \"Description about the payment.\",\n \"type\": \"string\",\n \"example\": \"Payment has been added to INV-384\"\n },\n \"invoices\": {\n \"description\": \"List of invoices associated with the payment. Each invoice object contains invoice_id, invoice_number, date, invoice_amount, amount_applied and balance_amount.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"invoice_id\": {\n \"description\": \"Invoice ID of the required invoice.\",\n \"type\": \"string\",\n \"example\": \"90300000079426\"\n },\n \"amount_applied\": {\n \"description\": \"Amount paid for the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n }\n }\n }\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1,\n \"default\": 1\n },\n \"payment_form\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"cash\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"bank_charges\": {\n \"description\": \"Denotes any additional bank charges.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"custom_fields\": {\n \"description\": \"Additional fields for the payments.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"description\": \"Label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"label\"\n },\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": 129890\n }\n }\n }\n },\n \"invoice_id\": {\n \"description\": \"Invoice ID of the required invoice.\",\n \"type\": \"string\",\n \"example\": \"90300000079426\"\n },\n \"amount_applied\": {\n \"description\": \"Amount paid for the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"tax_amount_withheld\": {\n \"description\": \"Amount withheld for tax.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"account_id\": {\n \"description\": \"ID of the cash/bank account the payment has to be deposited.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"retainerinvoice_id\": {\n \"description\": \"ID of the retainer invoice associated with the payment\",\n \"type\": \"string\",\n \"example\": \"982000000567114\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimate.json new file mode 100644 index 00000000..c5fadcda --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimate.json @@ -0,0 +1,1414 @@ +{ + "name": "UpdateEstimate", + "fully_qualified_name": "ZohoBooksApi.UpdateEstimate@0.1.0", + "description": "Update an existing estimate in Zoho Books.\n\nUse this tool to modify an existing estimate in Zoho Books. When updating, you can remove a line item by excluding it from the line_items list.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization whose estimate needs updating. It should be a unique identifier in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_unique_id", + "required": true, + "description": "Unique identifier for the estimate you want to update in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "estimate_update_request_body", + "required": false, + "description": "JSON object containing details for updating an estimate in Zoho Books, including customer ID, currency ID, contact persons, line items, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the customer (contact) for whom the estimate is created. This must be a valid contact ID from your organization; obtain it using the Contacts API (GET /contacts) or the Create Contact response." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the currency in which the estimate will be created. Use this to specify the customer\u2019s preferred currency for transactions. Fetch valid currency IDs using the Currency API (GET /currencies)." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the estimate." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the template used for generating the estimate PDF. Use this to apply custom branding or formats. Fetch template IDs using the Templates API (GET /estimates/templates)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "estimate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate number.Variantsestimate_number_startswith and estimate_number_contains" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional external identifier used to associate the estimate with other systems or workflows. Helps improve traceability and integration during estimate creation." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate date.Variants date_start, date_end, date_before and date_after" + }, + "expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of expiration of the estimates" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify how the discount has to applied. Either before or after the calculation of tax." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "How the discount is specified. Allowed values are entity_level or item_level.Allowed Values: entity_level and item_level" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the sales person." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Custom fields for an estimate." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the estimate. Determines the display order of line items in the estimate document \u2014 lower values appear first. Use this field to organize line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate between the base currency and the transaction currency for this line item. Used for currency conversion and reporting." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to this line item. This value reduces the line item total before tax calculation." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total amount for this line item after applying quantity, rate, discounts, and taxes. This value contributes to the overall estimate total." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + } + }, + "description": "Line items of an estimate." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the estimate document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the estimate PDF and are visible to customers." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the terms and conditions to be included in the estimate document. This field can be used to specify payment terms, delivery schedules, return policies, or other transactional details. The terms appear on the estimate PDF and helps communicate key conditions related to the estimate." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the estimate. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the estimate total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the estimate total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final estimate total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the estimate document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the estimates. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the Estimate. Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this estimate. Use the project_id returned by the Projects API for the same organization. Linking an estimate to a project helps with project-based billing, tracking, and reporting." + }, + "accept_retainer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether a retainer invoice should be automatically created if the customer accepts this estimate. When set to true, a retainer invoice is generated upon acceptance, streamlining the process for upfront payments or deposits. Allowed values: true and false." + }, + "retainer_percentage": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the estimate amount to be collected as a retainer (upfront payment) when the estimate is accepted. Specify a value between 0 and 100. This determines the portion of the total estimate that will be invoiced as a retainer." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to true to ignore auto generation of estimate numbers and manually specify the estimate number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto estimate number generation for this estimate. This mandates the estimate number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_estimate'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto estimate number generation for this estimate. This mandates the estimate number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto estimate number generation for this estimate. This mandates the estimate number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_unique_id", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "estimate_update_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the customer (contact) for whom the estimate is created. This must be a valid contact ID from your organization; obtain it using the Contacts API (GET /contacts) or the Create Contact response." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the currency in which the estimate will be created. Use this to specify the customer\u2019s preferred currency for transactions. Fetch valid currency IDs using the Currency API (GET /currencies)." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the estimate." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the template used for generating the estimate PDF. Use this to apply custom branding or formats. Fetch template IDs using the Templates API (GET /estimates/templates)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "estimate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate number.Variantsestimate_number_startswith and estimate_number_contains" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional external identifier used to associate the estimate with other systems or workflows. Helps improve traceability and integration during estimate creation." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate date.Variants date_start, date_end, date_before and date_after" + }, + "expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of expiration of the estimates" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify how the discount has to applied. Either before or after the calculation of tax." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "How the discount is specified. Allowed values are entity_level or item_level.Allowed Values: entity_level and item_level" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the sales person." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Custom fields for an estimate." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the estimate. Determines the display order of line items in the estimate document \u2014 lower values appear first. Use this field to organize line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate between the base currency and the transaction currency for this line item. Used for currency conversion and reporting." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to this line item. This value reduces the line item total before tax calculation." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total amount for this line item after applying quantity, rate, discounts, and taxes. This value contributes to the overall estimate total." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + } + }, + "description": "Line items of an estimate." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the estimate document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the estimate PDF and are visible to customers." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the terms and conditions to be included in the estimate document. This field can be used to specify payment terms, delivery schedules, return policies, or other transactional details. The terms appear on the estimate PDF and helps communicate key conditions related to the estimate." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the estimate. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the estimate total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the estimate total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final estimate total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the estimate document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the estimates. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the Estimate. Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this estimate. Use the project_id returned by the Projects API for the same organization. Linking an estimate to a project helps with project-based billing, tracking, and reporting." + }, + "accept_retainer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether a retainer invoice should be automatically created if the customer accepts this estimate. When set to true, a retainer invoice is generated upon acceptance, streamlining the process for upfront payments or deposits. Allowed values: true and false." + }, + "retainer_percentage": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the estimate amount to be collected as a retainer (upfront payment) when the estimate is accepted. Specify a value between 0 and 100. This determines the portion of the total estimate that will be invoiced as a retainer." + } + }, + "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 \"required\": [\n \"customer_id\",\n \"custom_fields\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"The ID of the customer (contact) for whom the estimate is created. This must be a valid contact ID from your organization; obtain it using the Contacts API (GET /contacts) or the Create Contact response.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"currency_id\": {\n \"description\": \"The ID of the currency in which the estimate will be created. Use this to specify the customer\\u2019s preferred currency for transactions. Fetch valid currency IDs using the Currency API (GET /currencies).\",\n \"type\": \"string\",\n \"example\": 982000000000190\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the estimate.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"template_id\": {\n \"description\": \"The ID of the template used for generating the estimate PDF. Use this to apply custom branding or formats. Fetch template IDs using the Templates API (GET /estimates/templates).\",\n \"type\": \"string\",\n \"example\": 982000000000143\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"estimate_number\": {\n \"description\": \"Search estimates by estimate number.Variantsestimate_number_startswith and estimate_number_contains\",\n \"type\": \"string\",\n \"example\": \"EST-00002\"\n },\n \"reference_number\": {\n \"description\": \"Optional external identifier used to associate the estimate with other systems or workflows. Helps improve traceability and integration during estimate creation.\",\n \"type\": \"string\",\n \"example\": \"QRT-12346\"\n },\n \"date\": {\n \"description\": \"Search estimates by estimate date.Variants date_start, date_end, date_before and date_after\",\n \"type\": \"string\",\n \"example\": \"2013-11-18\"\n },\n \"expiry_date\": {\n \"description\": \"The date of expiration of the estimates\",\n \"type\": \"string\",\n \"example\": \"2013-11-30\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate of the currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"discount\": {\n \"description\": \"Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"is_discount_before_tax\": {\n \"description\": \"Used to specify how the discount has to applied. Either before or after the calculation of tax.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"How the discount is specified. Allowed values are entity_level or item_level.Allowed Values: entity_level and item_level\",\n \"type\": \"string\",\n \"example\": \"item_level\"\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"custom_body\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_subject\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"salesperson_name\": {\n \"description\": \"Name of the sales person.\",\n \"type\": \"string\",\n \"example\": \"Will smith\"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an estimate.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"type\": \"string\",\n \"example\": \"15 Dec 2013\"\n }\n }\n }\n },\n \"line_items\": {\n \"description\": \"Line items of an estimate.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added.\",\n \"type\": \"string\",\n \"example\": 982000000567021\n },\n \"name\": {\n \"description\": \"Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"product_type\": {\n \"description\": \"Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations.\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"E48\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_order\": {\n \"description\": \"Sequential order number for this line item on the estimate. Determines the display order of line items in the estimate document \\u2014 lower values appear first. Use this field to organize line items in a specific sequence.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"bcy_rate\": {\n \"description\": \"Exchange rate between the base currency and the transaction currency for this line item. Used for currency conversion and reporting.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 120\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"quantity\": {\n \"description\": \"Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"discount_amount\": {\n \"description\": \"Discount amount applied to this line item. This value reduces the line item total before tax calculation.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"discount\": {\n \"description\": \"Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax.\",\n \"type\": \"string\",\n \"example\": \"982000000557012\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_name\": {\n \"description\": \"The name of the tax\",\n \"type\": \"string\",\n \"example\": \"VAT\"\n },\n \"tax_type\": {\n \"description\": \"The type of the tax\",\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_percentage\": {\n \"description\": \"The percentage of tax levied\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 12.5\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_total\": {\n \"description\": \"Total amount for this line item after applying quantity, rate, discounts, and taxes. This value contributes to the overall estimate total.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 120\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"notes\": {\n \"description\": \"Additional information or comments to be displayed on the estimate document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the estimate PDF and are visible to customers.\",\n \"type\": \"string\",\n \"example\": \"Looking forward for your business.\"\n },\n \"terms\": {\n \"description\": \"Defines the terms and conditions to be included in the estimate document. This field can be used to specify payment terms, delivery schedules, return policies, or other transactional details. The terms appear on the estimate PDF and helps communicate key conditions related to the estimate.\",\n \"type\": \"string\",\n \"example\": \"Terms & Conditions apply\"\n },\n \"shipping_charge\": {\n \"description\": \"Additional shipping or delivery charges applied to the estimate. Must be specified as a fixed amount (e.g., \\\"25.00\\\"). This amount is added to the estimate total and is subject to tax calculation.\",\n \"type\": \"string\",\n \"example\": 0\n },\n \"adjustment\": {\n \"description\": \"Additional charge or credit amount applied to the estimate total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final estimate total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Text description explaining the reason for the adjustment amount. This description appears on the estimate document to explain why the adjustment was applied. Common examples include \\\"Rounding adjustment\\\", \\\"Handling fee\\\", \\\"Early payment discount\\\", or \\\"Late payment fee\\\". This helps customers understand the purpose of the adjustment.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": 11149000000061054,\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": 11149000000061052,\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the estimates. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the Estimate. Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_id\": {\n \"description\": \"Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added.\",\n \"type\": \"string\",\n \"example\": 982000000567021\n },\n \"name\": {\n \"description\": \"Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"quantity\": {\n \"description\": \"Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"project_id\": {\n \"description\": \"Unique identifier of the project associated with this estimate. Use the project_id returned by the Projects API for the same organization. Linking an estimate to a project helps with project-based billing, tracking, and reporting.\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"accept_retainer\": {\n \"description\": \"Boolean flag indicating whether a retainer invoice should be automatically created if the customer accepts this estimate. When set to true, a retainer invoice is generated upon acceptance, streamlining the process for upfront payments or deposits. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"retainer_percentage\": {\n \"description\": \"Percentage of the estimate amount to be collected as a retainer (upfront payment) when the estimate is accepted. Specify a value between 0 and 100. This determines the portion of the total estimate that will be invoiced as a retainer.\",\n \"type\": \"integer\",\n \"example\": 10\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateBillingAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateBillingAddress.json new file mode 100644 index 00000000..01fdd2df --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateBillingAddress.json @@ -0,0 +1,285 @@ +{ + "name": "UpdateEstimateBillingAddress", + "fully_qualified_name": "ZohoBooksApi.UpdateEstimateBillingAddress@0.1.0", + "description": "Updates the billing address for a specific estimate.\n\nUse this tool to update the billing address for a specific estimate in Zoho Books. Call this tool when there's a need to change the billing details associated with an individual estimate.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. Required to specify the organization whose estimate billing address is to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier of the estimate to update the billing address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "billing_address_details", + "required": false, + "description": "JSON object containing updated billing address details for the estimate, including fields such as address, city, state, zip, country, and fax.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the estimate" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_estimate_billing_address'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/address/billing", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "billing_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the estimate" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "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 \"address\": {\n \"description\": \"Billing address for the estimate\",\n \"type\": \"string\",\n \"example\": \"B-1104, 11F, \\nHorizon International Tower, \\nNo. 6, ZhiChun Road, HaiDian District,\"\n },\n \"city\": {\n \"description\": \"City of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"state\": {\n \"description\": \"State of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"zip\": {\n \"description\": \"Zip code of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": 1000881\n },\n \"country\": {\n \"description\": \"Country of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"China\"\n },\n \"fax\": {\n \"description\": \"Customer's fax number.\",\n \"type\": \"string\",\n \"example\": \"+86-10-82637827\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateComment.json new file mode 100644 index 00000000..0da77769 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateComment.json @@ -0,0 +1,254 @@ +{ + "name": "UpdateEstimateComment", + "fully_qualified_name": "ZohoBooksApi.UpdateEstimateComment@0.1.0", + "description": "Update an existing comment on an estimate.\n\nUse this tool to update a specific comment associated with an estimate in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The ID representing the organization. Required to update the comment in the specified organization's estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier of the estimate to update the comment for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "comment_unique_identifier", + "required": true, + "description": "The unique identifier of the comment to be updated on an estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + }, + { + "name": "update_comment_details", + "required": false, + "description": "JSON object containing the updated description and visibility to clients for the estimate comment.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the line items" + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to show the comments to contacts in portal." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_estimate_comment'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/comments/{comment_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_unique_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "update_comment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the line items" + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to show the comments to contacts in portal." + } + }, + "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 \"description\": {\n \"description\": \"The description of the line items\",\n \"type\": \"string\",\n \"example\": \"Estimate created\"\n },\n \"show_comment_to_clients\": {\n \"description\": \"Boolean to show the comments to contacts in portal.\",\n \"type\": \"boolean\",\n \"example\": \" \"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateCustomFields.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateCustomFields.json new file mode 100644 index 00000000..b990e8fc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateCustomFields.json @@ -0,0 +1,221 @@ +{ + "name": "UpdateEstimateCustomFields", + "fully_qualified_name": "ZohoBooksApi.UpdateEstimateCustomFields@0.1.0", + "description": "Update custom fields in a specific estimate.\n\nThis tool updates the values of custom fields in an existing estimate. It should be called when you need to modify or add information to custom fields of a particular estimate.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization whose estimate custom fields are being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier for the estimate to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "custom_fields_update", + "required": false, + "description": "An array of JSON objects, each containing 'customfield_id' (integer) and 'value' (string) for updating custom fields.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_custom_fields_in_estimate'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimate/{estimate_id}/customfields", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_fields_update", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "" + }, + "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 \"description\": \"Custom fields for an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"type\": \"string\",\n \"example\": \"15 Dec 2013\"\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateShippingAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateShippingAddress.json new file mode 100644 index 00000000..cede98bb --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateShippingAddress.json @@ -0,0 +1,285 @@ +{ + "name": "UpdateEstimateShippingAddress", + "fully_qualified_name": "ZohoBooksApi.UpdateEstimateShippingAddress@0.1.0", + "description": "Updates the shipping address for an existing estimate in Zoho Books.\n\nThis tool is used to update the shipping address for a specific estimate in the Zoho Books system. It should be called when there's a need to modify the delivery details associated with an existing estimate.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization in Zoho Books whose estimate's shipping address is to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Unique identifier of the estimate to update its shipping address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "shipping_address_details", + "required": false, + "description": "JSON object containing the new shipping address details, including 'address', 'city', 'state', 'zip', 'country', and 'fax'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the estimate" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_estimate_shipping_address'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/address/shipping", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "shipping_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address for the estimate" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s billing address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s billing address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s billing address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s billing address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "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 \"address\": {\n \"description\": \"Billing address for the estimate\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd, Suite 310\"\n },\n \"city\": {\n \"description\": \"City of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Zip code of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": 94588\n },\n \"country\": {\n \"description\": \"Country of the customer\\u2019s billing address.\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"fax\": {\n \"description\": \"Customer's fax number.\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateTemplate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateTemplate.json new file mode 100644 index 00000000..511f611d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateTemplate.json @@ -0,0 +1,187 @@ +{ + "name": "UpdateEstimateTemplate", + "fully_qualified_name": "ZohoBooksApi.UpdateEstimateTemplate@0.1.0", + "description": "Update the PDF template for an estimate.\n\nUse this tool to update the PDF template associated with a specific estimate in Zoho Books by providing the estimate and template IDs.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization for which the estimate template is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "estimate_identifier", + "required": true, + "description": "Provide the unique identifier for the specific estimate you want to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "estimate_id" + }, + { + "name": "estimate_template_identifier", + "required": true, + "description": "Unique identifier for the estimate template to update in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_estimate_template'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates/{estimate_id}/templates/{template_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "estimate_id", + "tool_parameter_name": "estimate_identifier", + "description": "Unique identifier of the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "template_id", + "tool_parameter_name": "estimate_template_identifier", + "description": "Unique identifier of the estimate template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate template." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateWithCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateWithCustomField.json new file mode 100644 index 00000000..1c420ebc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateEstimateWithCustomField.json @@ -0,0 +1,1447 @@ +{ + "name": "UpdateEstimateWithCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateEstimateWithCustomField@0.1.0", + "description": "Update or create an estimate using a custom field value.\n\nThis tool allows updating an existing estimate by providing a unique custom field value. If the value does not match any existing estimates and the X-Upsert header is true, a new estimate will be created if required details are provided. Use this tool to maintain estimates based on unique identifiers.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization for which the estimate is being updated or created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_api_name", + "required": true, + "description": "The API name of the custom field used to uniquely identify and update an estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "The unique value of the custom field used to identify and update the estimate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "estimate_details_request_body", + "required": false, + "description": "JSON object containing details for creating or updating an estimate, including fields like customer_id, currency_id, line_items, and other relevant information about the estimate.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the customer (contact) for whom the estimate is created. This must be a valid contact ID from your organization; obtain it using the Contacts API (GET /contacts) or the Create Contact response." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the currency in which the estimate will be created. Use this to specify the customer\u2019s preferred currency for transactions. Fetch valid currency IDs using the Currency API (GET /currencies)." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the estimate." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the template used for generating the estimate PDF. Use this to apply custom branding or formats. Fetch template IDs using the Templates API (GET /estimates/templates)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "estimate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate number.Variantsestimate_number_startswith and estimate_number_contains" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional external identifier used to associate the estimate with other systems or workflows. Helps improve traceability and integration during estimate creation." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate date.Variants date_start, date_end, date_before and date_after" + }, + "expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of expiration of the estimates" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify how the discount has to applied. Either before or after the calculation of tax." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "How the discount is specified. Allowed values are entity_level or item_level.Allowed Values: entity_level and item_level" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the sales person." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Custom fields for an estimate." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the estimate. Determines the display order of line items in the estimate document \u2014 lower values appear first. Use this field to organize line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate between the base currency and the transaction currency for this line item. Used for currency conversion and reporting." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to this line item. This value reduces the line item total before tax calculation." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total amount for this line item after applying quantity, rate, discounts, and taxes. This value contributes to the overall estimate total." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + } + }, + "description": "Line items of an estimate." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the estimate document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the estimate PDF and are visible to customers." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the terms and conditions to be included in the estimate document. This field can be used to specify payment terms, delivery schedules, return policies, or other transactional details. The terms appear on the estimate PDF and helps communicate key conditions related to the estimate." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the estimate. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the estimate total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the estimate total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final estimate total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the estimate document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the estimates. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the Estimate. Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this estimate. Use the project_id returned by the Projects API for the same organization. Linking an estimate to a project helps with project-based billing, tracking, and reporting." + }, + "accept_retainer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether a retainer invoice should be automatically created if the customer accepts this estimate. When set to true, a retainer invoice is generated upon acceptance, streamlining the process for upfront payments or deposits. Allowed values: true and false." + }, + "retainer_percentage": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the estimate amount to be collected as a retainer (upfront payment) when the estimate is accepted. Specify a value between 0 and 100. This determines the portion of the total estimate that will be invoiced as a retainer." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_new_estimate_if_not_found", + "required": false, + "description": "Set to true to create a new estimate if no existing record matches the custom field value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_estimate_using_custom_field'.", + "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": [ + "ZohoBooks.estimates.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/estimates", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_new_estimate_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "estimate_details_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the customer (contact) for whom the estimate is created. This must be a valid contact ID from your organization; obtain it using the Contacts API (GET /contacts) or the Create Contact response." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the currency in which the estimate will be created. Use this to specify the customer\u2019s preferred currency for transactions. Fetch valid currency IDs using the Currency API (GET /currencies)." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the estimate." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the template used for generating the estimate PDF. Use this to apply custom branding or formats. Fetch template IDs using the Templates API (GET /estimates/templates)." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "estimate_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate number.Variantsestimate_number_startswith and estimate_number_contains" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional external identifier used to associate the estimate with other systems or workflows. Helps improve traceability and integration during estimate creation." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search estimates by estimate date.Variants date_start, date_end, date_before and date_after" + }, + "expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date of expiration of the estimates" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify how the discount has to applied. Either before or after the calculation of tax." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "How the discount is specified. Allowed values are entity_level or item_level.Allowed Values: entity_level and item_level" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the sales person." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Custom fields for an estimate." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the estimate. Determines the display order of line items in the estimate document \u2014 lower values appear first. Use this field to organize line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate between the base currency and the transaction currency for this line item. Used for currency conversion and reporting." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to this line item. This value reduces the line item total before tax calculation." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total amount for this line item after applying quantity, rate, discounts, and taxes. This value contributes to the overall estimate total." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + } + }, + "description": "Line items of an estimate." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the estimate document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the estimate PDF and are visible to customers." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the terms and conditions to be included in the estimate document. This field can be used to specify payment terms, delivery schedules, return policies, or other transactional details. The terms appear on the estimate PDF and helps communicate key conditions related to the estimate." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the estimate. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the estimate total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the estimate total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final estimate total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the estimate document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the estimates. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the Estimate. Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this estimate. Use the project_id returned by the Projects API for the same organization. Linking an estimate to a project helps with project-based billing, tracking, and reporting." + }, + "accept_retainer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether a retainer invoice should be automatically created if the customer accepts this estimate. When set to true, a retainer invoice is generated upon acceptance, streamlining the process for upfront payments or deposits. Allowed values: true and false." + }, + "retainer_percentage": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percentage of the estimate amount to be collected as a retainer (upfront payment) when the estimate is accepted. Specify a value between 0 and 100. This determines the portion of the total estimate that will be invoiced as a retainer." + } + }, + "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 \"required\": [\n \"customer_id\",\n \"custom_fields\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"The ID of the customer (contact) for whom the estimate is created. This must be a valid contact ID from your organization; obtain it using the Contacts API (GET /contacts) or the Create Contact response.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"currency_id\": {\n \"description\": \"The ID of the currency in which the estimate will be created. Use this to specify the customer\\u2019s preferred currency for transactions. Fetch valid currency IDs using the Currency API (GET /currencies).\",\n \"type\": \"string\",\n \"example\": 982000000000190\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the estimate.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"template_id\": {\n \"description\": \"The ID of the template used for generating the estimate PDF. Use this to apply custom branding or formats. Fetch template IDs using the Templates API (GET /estimates/templates).\",\n \"type\": \"string\",\n \"example\": 982000000000143\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"estimate_number\": {\n \"description\": \"Search estimates by estimate number.Variantsestimate_number_startswith and estimate_number_contains\",\n \"type\": \"string\",\n \"example\": \"EST-00002\"\n },\n \"reference_number\": {\n \"description\": \"Optional external identifier used to associate the estimate with other systems or workflows. Helps improve traceability and integration during estimate creation.\",\n \"type\": \"string\",\n \"example\": \"QRT-12346\"\n },\n \"date\": {\n \"description\": \"Search estimates by estimate date.Variants date_start, date_end, date_before and date_after\",\n \"type\": \"string\",\n \"example\": \"2013-11-18\"\n },\n \"expiry_date\": {\n \"description\": \"The date of expiration of the estimates\",\n \"type\": \"string\",\n \"example\": \"2013-11-30\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate of the currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"discount\": {\n \"description\": \"Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"is_discount_before_tax\": {\n \"description\": \"Used to specify how the discount has to applied. Either before or after the calculation of tax.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"How the discount is specified. Allowed values are entity_level or item_level.Allowed Values: entity_level and item_level\",\n \"type\": \"string\",\n \"example\": \"item_level\"\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"custom_body\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_subject\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"salesperson_name\": {\n \"description\": \"Name of the sales person.\",\n \"type\": \"string\",\n \"example\": \"Will smith\"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an estimate.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"type\": \"string\",\n \"example\": \"15 Dec 2013\"\n }\n }\n }\n },\n \"line_items\": {\n \"description\": \"Line items of an estimate.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added.\",\n \"type\": \"string\",\n \"example\": 982000000567021\n },\n \"name\": {\n \"description\": \"Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"product_type\": {\n \"description\": \"Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations.\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"E48\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_order\": {\n \"description\": \"Sequential order number for this line item on the estimate. Determines the display order of line items in the estimate document \\u2014 lower values appear first. Use this field to organize line items in a specific sequence.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"bcy_rate\": {\n \"description\": \"Exchange rate between the base currency and the transaction currency for this line item. Used for currency conversion and reporting.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 120\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"quantity\": {\n \"description\": \"Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"discount_amount\": {\n \"description\": \"Discount amount applied to this line item. This value reduces the line item total before tax calculation.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"discount\": {\n \"description\": \"Discount applied to the estimate. It can be either in % or in amount. e.g. 12.5% or 190.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax.\",\n \"type\": \"string\",\n \"example\": \"982000000557012\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_name\": {\n \"description\": \"The name of the tax\",\n \"type\": \"string\",\n \"example\": \"VAT\"\n },\n \"tax_type\": {\n \"description\": \"The type of the tax\",\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_percentage\": {\n \"description\": \"The percentage of tax levied\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 12.5\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_total\": {\n \"description\": \"Total amount for this line item after applying quantity, rate, discounts, and taxes. This value contributes to the overall estimate total.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 120\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the estimate. Use the `location_id` returned by the Locations API for the same organization. This links the estimate to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"notes\": {\n \"description\": \"Additional information or comments to be displayed on the estimate document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the estimate PDF and are visible to customers.\",\n \"type\": \"string\",\n \"example\": \"Looking forward for your business.\"\n },\n \"terms\": {\n \"description\": \"Defines the terms and conditions to be included in the estimate document. This field can be used to specify payment terms, delivery schedules, return policies, or other transactional details. The terms appear on the estimate PDF and helps communicate key conditions related to the estimate.\",\n \"type\": \"string\",\n \"example\": \"Terms & Conditions apply\"\n },\n \"shipping_charge\": {\n \"description\": \"Additional shipping or delivery charges applied to the estimate. Must be specified as a fixed amount (e.g., \\\"25.00\\\"). This amount is added to the estimate total and is subject to tax calculation.\",\n \"type\": \"string\",\n \"example\": 0\n },\n \"adjustment\": {\n \"description\": \"Additional charge or credit amount applied to the estimate total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final estimate total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Text description explaining the reason for the adjustment amount. This description appears on the estimate document to explain why the adjustment was applied. Common examples include \\\"Rounding adjustment\\\", \\\"Handling fee\\\", \\\"Early payment discount\\\", or \\\"Late payment fee\\\". This helps customers understand the purpose of the adjustment.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": 11149000000061054,\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": 11149000000061052,\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the estimates. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the Estimate. Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_id\": {\n \"description\": \"Unique identifier of the item (product or service) being quoted in this line item. Use the `item_id` returned by the Items API for the same organization. This links the line item to a specific product or service in your catalog.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier of the line item within the estimate. Required when updating or referencing a specific line item. If omitted during creation, a new line item will be added.\",\n \"type\": \"string\",\n \"example\": 982000000567021\n },\n \"name\": {\n \"description\": \"Name of the product or service for this line item. This is displayed on the estimate document and helps the customer identify what is being quoted.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Detailed description of the product or service in this line item. Use this field to provide specifications, features, or any other relevant information that helps the customer understand about the line item.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the product or service in this line item. This value is multiplied by the quantity to determine the line item total before taxes and discounts.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the product or service in this line item (e.g., kgs, Nos., hours). Helps clarify the quantity being quoted.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"quantity\": {\n \"description\": \"Number of units of the product or service being quoted in this line item. This value is multiplied by the rate to calculate the line item total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"project_id\": {\n \"description\": \"Unique identifier of the project associated with this estimate. Use the project_id returned by the Projects API for the same organization. Linking an estimate to a project helps with project-based billing, tracking, and reporting.\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"accept_retainer\": {\n \"description\": \"Boolean flag indicating whether a retainer invoice should be automatically created if the customer accepts this estimate. When set to true, a retainer invoice is generated upon acceptance, streamlining the process for upfront payments or deposits. Allowed values: true and false.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"retainer_percentage\": {\n \"description\": \"Percentage of the estimate amount to be collected as a retainer (upfront payment) when the estimate is accepted. Specify a value between 0 and 100. This determines the portion of the total estimate that will be invoiced as a retainer.\",\n \"type\": \"integer\",\n \"example\": 10\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateExchangeRate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateExchangeRate.json new file mode 100644 index 00000000..72c9c4cc --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateExchangeRate.json @@ -0,0 +1,254 @@ +{ + "name": "UpdateExchangeRate", + "fully_qualified_name": "ZohoBooksApi.UpdateExchangeRate@0.1.0", + "description": "Update exchange rate details for a currency in Zoho Books.\n\nThis tool updates the exchange rate for a specified currency in Zoho Books. It should be called when you need to modify the exchange rate details, usually for financial reports, accounting adjustments, or compliance with real-time rates.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the exchange rate is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "currency_unique_identifier", + "required": true, + "description": "Unique identifier for the currency you want to update the exchange rate for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "inferrable": true, + "http_endpoint_parameter_name": "currency_id" + }, + { + "name": "exchange_rate_identifier", + "required": true, + "description": "Unique identifier for the exchange rate to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the exchange rate." + }, + "inferrable": true, + "http_endpoint_parameter_name": "exchange_rate_id" + }, + { + "name": "exchange_rate_details", + "required": false, + "description": "JSON object containing 'effective_date' for when the rate is applicable and 'rate' as the numeric exchange rate value.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "effective_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date which the exchange rate is applicable for the currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of exchange for the currency with respect to base currency." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_exchange_rate'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/currencies/{currency_id}/exchangerates/{exchange_rate_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "currency_id", + "tool_parameter_name": "currency_unique_identifier", + "description": "Unique identifier of the currency.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "exchange_rate_id", + "tool_parameter_name": "exchange_rate_identifier", + "description": "Unique identifier of the exchange rate.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the exchange rate." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "exchange_rate_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "effective_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date which the exchange rate is applicable for the currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of exchange for the currency with respect to base currency." + } + }, + "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 \"effective_date\": {\n \"description\": \"Date which the exchange rate is applicable for the currency.\",\n \"type\": \"string\",\n \"example\": \"2013-09-04\"\n },\n \"rate\": {\n \"description\": \"Rate of exchange for the currency with respect to base currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1.23\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateExistingExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateExistingExpense.json new file mode 100644 index 00000000..38542391 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateExistingExpense.json @@ -0,0 +1,1139 @@ +{ + "name": "UpdateExistingExpense", + "fully_qualified_name": "ZohoBooksApi.UpdateExistingExpense@0.1.0", + "description": "Update an existing expense in Zoho Books.\n\nUse this tool to modify details of an existing expense in Zoho Books. It should be called when you need to change information such as amount, date, or description of a recorded expense.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization. Required to identify which organization's expense is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "expense_identifier", + "required": true, + "description": "The unique identifier for the expense to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "inferrable": true, + "http_endpoint_parameter_name": "expense_id" + }, + { + "name": "expense_receipt_file", + "required": false, + "description": "File path of the expense receipt to attach. Allowed extensions are gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, and docx. Ensure the file is accessible and in an accepted format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expense receipt file to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "inferrable": true, + "http_endpoint_parameter_name": "receipt" + }, + { + "name": "expense_details", + "required": false, + "description": "A JSON object containing all details of the expense to update. Includes fields like account_id, date, amount, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the expense" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption code" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + } + }, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number of the expense. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project associated with the customer." + }, + "mileage_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "start_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "end_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "distance": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Distance travelled for a particular mileage expense where mileage_type is manual" + }, + "mileage_unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the distance travelled. Allowed Values: km and mile" + }, + "mileage_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mileage rate for a particular mileage expense." + }, + "employee_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the employee who has submitted this mileage expense." + }, + "vehicle_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Vehicle type for a particular mileage expense. Allowed Values: car, van, motorcycle and bike" + }, + "can_reclaim_vat_on_mileage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify if tax can be reclaimed for this mileage expense." + }, + "fuel_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fuel type for a particular mileage expense. Allowed Values: petrol, lpg and diesel" + }, + "engine_capacity_range": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Engine capacity range for a particular mileage expense. Allowed Values: less_than_1400cc, between_1400cc_and_1600cc, between_1600cc_and_2000cc and more_than_2000cc" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the expense is made." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom fields for an expense." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "delete_receipt", + "required": false, + "description": "Set to true to remove the attached receipt from the expense. Use false to keep it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "delete_receipt" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_expense'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses/{expense_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "receipt", + "tool_parameter_name": "expense_receipt_file", + "description": "Expense receipt file to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expense receipt file to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "delete_receipt", + "tool_parameter_name": "delete_receipt", + "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": "expense_id", + "tool_parameter_name": "expense_identifier", + "description": "Unique identifier of the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the expense." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "expense_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the expense" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption code" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + } + }, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number of the expense. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project associated with the customer." + }, + "mileage_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "start_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "end_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "distance": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Distance travelled for a particular mileage expense where mileage_type is manual" + }, + "mileage_unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the distance travelled. Allowed Values: km and mile" + }, + "mileage_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mileage rate for a particular mileage expense." + }, + "employee_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the employee who has submitted this mileage expense." + }, + "vehicle_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Vehicle type for a particular mileage expense. Allowed Values: car, van, motorcycle and bike" + }, + "can_reclaim_vat_on_mileage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify if tax can be reclaimed for this mileage expense." + }, + "fuel_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fuel type for a particular mileage expense. Allowed Values: petrol, lpg and diesel" + }, + "engine_capacity_range": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Engine capacity range for a particular mileage expense. Allowed Values: less_than_1400cc, between_1400cc_and_1600cc, between_1600cc_and_2000cc and more_than_2000cc" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the expense is made." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom fields for an expense." + } + }, + "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 \"required\": [\n \"date\",\n \"account_id\",\n \"amount\",\n \"paid_through_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"account_id\": {\n \"description\": \"ID of the expense account.\",\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"date\": {\n \"description\": \"Date of the expense\",\n \"type\": \"string\",\n \"example\": \"2013-11-18\"\n },\n \"amount\": {\n \"description\": \"Amount of the Expense.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120.5\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"ID of the reverse charge tax\",\n \"type\": \"string\",\n \"example\": 982000000561063\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"type\": \"string\",\n \"example\": 10763000000140068\n },\n \"account_id\": {\n \"description\": \"ID of the expense account.\",\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"description\": {\n \"description\": \"Description of the expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Marketing\"\n },\n \"amount\": {\n \"description\": \"Amount of the Expense.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"item_order\": {\n \"type\": \"string\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"ID of the reverse charge tax\",\n \"type\": \"string\",\n \"example\": 982000000561063\n },\n \"tax_exemption_code\": {\n \"description\": \"Enter tax exemption code\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Enter tax exemption ID\",\n \"type\": \"string\",\n \"example\": 982000000561067,\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"taxes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"tax_amount\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 11.85\n }\n }\n },\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_billable\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"reference_number\": {\n \"description\": \"Reference number of the expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": null\n },\n \"description\": {\n \"description\": \"Description of the expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Marketing\"\n },\n \"customer_id\": {\n \"description\": \"ID of the expense account.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"exchange_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"project_id\": {\n \"description\": \"ID of the project associated with the customer.\",\n \"type\": \"string\",\n \"example\": 982000000567226\n },\n \"mileage_type\": {\n \"type\": \"string\",\n \"example\": \"non_mileage\"\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"eu_vat_not_registered\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the expense .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"start_reading\": {\n \"description\": \"Start reading of odometer when creating a mileage expense where mileage_type is odometer.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \" \"\n },\n \"end_reading\": {\n \"description\": \"End reading of odometer when creating a mileage expense where mileage_type is odometer.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \" \"\n },\n \"distance\": {\n \"description\": \"Distance travelled for a particular mileage expense where mileage_type is manual\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"mileage_unit\": {\n \"description\": \"Unit of the distance travelled. Allowed Values: km and mile\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"mileage_rate\": {\n \"description\": \"Mileage rate for a particular mileage expense.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \" \"\n },\n \"employee_id\": {\n \"description\": \"ID of the employee who has submitted this mileage expense.\",\n \"type\": \"string\",\n \"example\": \"982000000030040\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vehicle_type\": {\n \"description\": \"Vehicle type for a particular mileage expense. Allowed Values: car, van, motorcycle and bike\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"can_reclaim_vat_on_mileage\": {\n \"description\": \"To specify if tax can be reclaimed for this mileage expense.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"fuel_type\": {\n \"description\": \"Fuel type for a particular mileage expense. Allowed Values: petrol, lpg and diesel\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"engine_capacity_range\": {\n \"description\": \"Engine capacity range for a particular mileage expense. Allowed Values: less_than_1400cc, between_1400cc_and_1600cc, between_1600cc_and_2000cc and more_than_2000cc\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"paid_through_account_id\": {\n \"description\": \"Search expenses by paid through account id.\",\n \"type\": \"string\",\n \"example\": 982000000567250\n },\n \"vendor_id\": {\n \"description\": \"ID of the vendor the expense is made.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an expense.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateExpenseWithCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateExpenseWithCustomField.json new file mode 100644 index 00000000..28db080b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateExpenseWithCustomField.json @@ -0,0 +1,1139 @@ +{ + "name": "UpdateExpenseWithCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateExpenseWithCustomField@0.1.0", + "description": "Update or create an expense using custom field values.\n\nThis tool updates an existing expense based on a unique custom field value. If the unique value doesn't match any existing expenses, and the X-Upsert header is true, a new expense will be created if all required details are provided.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the expense update is intended. It is required to identify the target organization in the API.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "custom_field_api_name", + "required": true, + "description": "API name of the unique custom field used to identify the expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "The unique value for the custom field used to update or create an expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "expense_request_data", + "required": false, + "description": "JSON object containing detailed information for updating or creating an expense. Includes fields such as account_id, date, amount, line_items, taxes, and various other metadata about the expense.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the expense" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption code" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + } + }, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number of the expense. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project associated with the customer." + }, + "mileage_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "start_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "end_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "distance": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Distance travelled for a particular mileage expense where mileage_type is manual" + }, + "mileage_unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the distance travelled. Allowed Values: km and mile" + }, + "mileage_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mileage rate for a particular mileage expense." + }, + "employee_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the employee who has submitted this mileage expense." + }, + "vehicle_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Vehicle type for a particular mileage expense. Allowed Values: car, van, motorcycle and bike" + }, + "can_reclaim_vat_on_mileage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify if tax can be reclaimed for this mileage expense." + }, + "fuel_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fuel type for a particular mileage expense. Allowed Values: petrol, lpg and diesel" + }, + "engine_capacity_range": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Engine capacity range for a particular mileage expense. Allowed Values: less_than_1400cc, between_1400cc_and_1600cc, between_1600cc_and_2000cc and more_than_2000cc" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the expense is made." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom fields for an expense." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "allow_upsert_new_expense", + "required": false, + "description": "Set to true to create a new expense if no matching unique custom field value is found.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_expense_using_custom_field'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/expenses", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "allow_upsert_new_expense", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "expense_request_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the expense" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount of the Expense." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption code" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter tax exemption ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + } + }, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "taxes": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number of the expense. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the expense. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the expense account." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project associated with the customer." + }, + "mileage_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "start_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "end_reading": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End reading of odometer when creating a mileage expense where mileage_type is odometer." + }, + "distance": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Distance travelled for a particular mileage expense where mileage_type is manual" + }, + "mileage_unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the distance travelled. Allowed Values: km and mile" + }, + "mileage_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mileage rate for a particular mileage expense." + }, + "employee_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the employee who has submitted this mileage expense." + }, + "vehicle_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Vehicle type for a particular mileage expense. Allowed Values: car, van, motorcycle and bike" + }, + "can_reclaim_vat_on_mileage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify if tax can be reclaimed for this mileage expense." + }, + "fuel_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fuel type for a particular mileage expense. Allowed Values: petrol, lpg and diesel" + }, + "engine_capacity_range": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Engine capacity range for a particular mileage expense. Allowed Values: less_than_1400cc, between_1400cc_and_1600cc, between_1600cc_and_2000cc and more_than_2000cc" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by paid through account id." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the expense is made." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom fields for an expense." + } + }, + "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 \"required\": [\n \"date\",\n \"account_id\",\n \"amount\",\n \"paid_through_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"account_id\": {\n \"description\": \"ID of the expense account.\",\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"date\": {\n \"description\": \"Date of the expense\",\n \"type\": \"string\",\n \"example\": \"2013-11-18\"\n },\n \"amount\": {\n \"description\": \"Amount of the Expense.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120.5\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"ID of the reverse charge tax\",\n \"type\": \"string\",\n \"example\": 982000000561063\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"type\": \"string\",\n \"example\": 10763000000140068\n },\n \"account_id\": {\n \"description\": \"ID of the expense account.\",\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"description\": {\n \"description\": \"Description of the expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Marketing\"\n },\n \"amount\": {\n \"description\": \"Amount of the Expense.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"item_order\": {\n \"type\": \"string\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"ID of the reverse charge tax\",\n \"type\": \"string\",\n \"example\": 982000000561063\n },\n \"tax_exemption_code\": {\n \"description\": \"Enter tax exemption code\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Enter tax exemption ID\",\n \"type\": \"string\",\n \"example\": 982000000561067,\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"taxes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"tax_amount\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 11.85\n }\n }\n },\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_billable\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"reference_number\": {\n \"description\": \"Reference number of the expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": null\n },\n \"description\": {\n \"description\": \"Description of the expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Marketing\"\n },\n \"customer_id\": {\n \"description\": \"ID of the expense account.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"exchange_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"project_id\": {\n \"description\": \"ID of the project associated with the customer.\",\n \"type\": \"string\",\n \"example\": 982000000567226\n },\n \"mileage_type\": {\n \"type\": \"string\",\n \"example\": \"non_mileage\"\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"eu_vat_not_registered\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the expense .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK: digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"start_reading\": {\n \"description\": \"Start reading of odometer when creating a mileage expense where mileage_type is odometer.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \" \"\n },\n \"end_reading\": {\n \"description\": \"End reading of odometer when creating a mileage expense where mileage_type is odometer.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \" \"\n },\n \"distance\": {\n \"description\": \"Distance travelled for a particular mileage expense where mileage_type is manual\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"mileage_unit\": {\n \"description\": \"Unit of the distance travelled. Allowed Values: km and mile\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"mileage_rate\": {\n \"description\": \"Mileage rate for a particular mileage expense.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \" \"\n },\n \"employee_id\": {\n \"description\": \"ID of the employee who has submitted this mileage expense.\",\n \"type\": \"string\",\n \"example\": \"982000000030040\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vehicle_type\": {\n \"description\": \"Vehicle type for a particular mileage expense. Allowed Values: car, van, motorcycle and bike\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"can_reclaim_vat_on_mileage\": {\n \"description\": \"To specify if tax can be reclaimed for this mileage expense.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"fuel_type\": {\n \"description\": \"Fuel type for a particular mileage expense. Allowed Values: petrol, lpg and diesel\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"engine_capacity_range\": {\n \"description\": \"Engine capacity range for a particular mileage expense. Allowed Values: less_than_1400cc, between_1400cc_and_1600cc, between_1600cc_and_2000cc and more_than_2000cc\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"paid_through_account_id\": {\n \"description\": \"Search expenses by paid through account id.\",\n \"type\": \"string\",\n \"example\": 982000000567250\n },\n \"vendor_id\": {\n \"description\": \"ID of the vendor the expense is made.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an expense.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateFixedAssetInfo.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateFixedAssetInfo.json new file mode 100644 index 00000000..f4affef3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateFixedAssetInfo.json @@ -0,0 +1,593 @@ +{ + "name": "UpdateFixedAssetInfo", + "fully_qualified_name": "ZohoBooksApi.UpdateFixedAssetInfo@0.1.0", + "description": "Update fixed asset details in Zoho Books.\n\nUse this tool to update the information of a specific fixed asset in Zoho Books by providing the necessary asset details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization whose fixed asset you wish to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier for the specific fixed asset to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + }, + { + "name": "asset_update_details", + "required": false, + "description": "JSON object containing all the information needed to update a fixed asset, including fields like asset name, type, cost, and depreciation details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "asset_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the name of the fixed asset." + }, + "fixed_asset_type_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Associate the fixed asset with a fixed asset type by specifying fixed asset type id." + }, + "asset_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the fixed asset." + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "depreciation_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the asset\u2019s depreciation over time." + }, + "depreciation_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method" + }, + "depreciation_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the frequency of depreciation. The available frequencies are: yearly and monthly" + }, + "depreciation_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100" + }, + "total_life": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the total life of the asset (in months)" + }, + "salvage_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the remaining amount of the asset after its useful life or the value after it\u2019s fully depreciated" + }, + "depreciation_start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation start date of the asset" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the asset" + }, + "asset_cost": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the purchase cost of the asset" + }, + "computation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the computation types of assets. The available types are: prorata_basis and no_prorata" + }, + "warranty_expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the warranty expiration date of the asset" + }, + "asset_purchase_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the Purchase date of the asset" + }, + "serial_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "serial number of the asset" + }, + "dep_start_value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the value from which depreciation will be calculated." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Provide notes for the asset, if required" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Option ID of the tag" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_fixed_asset'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "asset_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "asset_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the name of the fixed asset." + }, + "fixed_asset_type_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Associate the fixed asset with a fixed asset type by specifying fixed asset type id." + }, + "asset_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the fixed asset." + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "depreciation_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the asset\u2019s depreciation over time." + }, + "depreciation_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method" + }, + "depreciation_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the frequency of depreciation. The available frequencies are: yearly and monthly" + }, + "depreciation_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100" + }, + "total_life": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the total life of the asset (in months)" + }, + "salvage_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the remaining amount of the asset after its useful life or the value after it\u2019s fully depreciated" + }, + "depreciation_start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation start date of the asset" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the asset" + }, + "asset_cost": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the purchase cost of the asset" + }, + "computation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the computation types of assets. The available types are: prorata_basis and no_prorata" + }, + "warranty_expiry_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the warranty expiration date of the asset" + }, + "asset_purchase_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the Purchase date of the asset" + }, + "serial_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "serial number of the asset" + }, + "dep_start_value": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the value from which depreciation will be calculated." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Provide notes for the asset, if required" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Option ID of the tag" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "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 \"required\": [\n \"asset_name\",\n \"fixed_asset_type_id\",\n \"asset_account_id\",\n \"asset_cost\",\n \"asset_purchase_date\"\n ],\n \"properties\": {\n \"asset_name\": {\n \"description\": \"Enter the name of the fixed asset.\",\n \"type\": \"string\",\n \"example\": \"Laptop\"\n },\n \"fixed_asset_type_id\": {\n \"description\": \"Associate the fixed asset with a fixed asset type by specifying fixed asset type id.\",\n \"type\": \"string\",\n \"example\": \"3640355000000319008\"\n },\n \"asset_account_id\": {\n \"description\": \"Enter the account id to track the fixed asset.\",\n \"type\": \"string\",\n \"example\": \"3640355000000000367\"\n },\n \"expense_account_id\": {\n \"description\": \"Enter the account id to track the expenses associated with the asset\\u2019s depreciation.The available account types are Expense and Other Expense\",\n \"type\": \"string\",\n \"example\": \"3640355000000000421\"\n },\n \"depreciation_account_id\": {\n \"description\": \"Enter the account id to track the asset\\u2019s depreciation over time.\",\n \"type\": \"string\",\n \"example\": \"3640355000000000367\"\n },\n \"depreciation_method\": {\n \"description\": \"Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method\",\n \"type\": \"string\",\n \"example\": \"declining_method\"\n },\n \"depreciation_frequency\": {\n \"description\": \"Enter the frequency of depreciation. The available frequencies are: yearly and monthly\",\n \"type\": \"string\",\n \"example\": \"yearly\"\n },\n \"depreciation_percentage\": {\n \"description\": \"Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 12\n },\n \"total_life\": {\n \"description\": \"Enter the total life of the asset (in months)\",\n \"type\": \"number\",\n \"example\": 60\n },\n \"salvage_value\": {\n \"description\": \"Enter the remaining amount of the asset after its useful life or the value after it\\u2019s fully depreciated\",\n \"type\": \"string\",\n \"format\": \"double\",\n \"example\": 100\n },\n \"depreciation_start_date\": {\n \"description\": \"Enter the depreciation start date of the asset\",\n \"type\": \"string\",\n \"example\": \"2024-12-17\"\n },\n \"description\": {\n \"description\": \"Description of the asset\",\n \"type\": \"string\"\n },\n \"asset_cost\": {\n \"description\": \"Enter the purchase cost of the asset\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1000\n },\n \"computation_type\": {\n \"description\": \"Enter the computation types of assets. The available types are: prorata_basis and no_prorata\",\n \"type\": \"string\",\n \"example\": \"prorata_basis\"\n },\n \"warranty_expiry_date\": {\n \"description\": \"Enter the warranty expiration date of the asset\",\n \"type\": \"string\",\n \"example\": \"2027-12-17\"\n },\n \"asset_purchase_date\": {\n \"description\": \"Enter the Purchase date of the asset\",\n \"type\": \"string\",\n \"example\": \"2024-12-17\"\n },\n \"serial_no\": {\n \"description\": \"serial number of the asset\",\n \"type\": \"string\",\n \"example\": \"SN-0001\"\n },\n \"dep_start_value\": {\n \"description\": \"Enter the value from which depreciation will be calculated.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1000\n },\n \"notes\": {\n \"description\": \"Provide notes for the asset, if required\",\n \"type\": \"string\",\n \"example\": \"This is a laptop Model 2024\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the tag\",\n \"type\": \"string\",\n \"example\": \"460000000094001\"\n },\n \"tag_option_id\": {\n \"description\": \"Option ID of the tag\",\n \"type\": \"string\",\n \"example\": \"460000000048001\"\n }\n }\n }\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"460000000098001\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateFixedAssetType.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateFixedAssetType.json new file mode 100644 index 00000000..e316d8bd --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateFixedAssetType.json @@ -0,0 +1,333 @@ +{ + "name": "UpdateFixedAssetType", + "fully_qualified_name": "ZohoBooksApi.UpdateFixedAssetType@0.1.0", + "description": "Update a fixed asset type with new information.\n\nUse this tool to update the details of a fixed asset type by providing the relevant asset type ID and new information. It should be called when modifying asset categories in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_type_identifier", + "required": true, + "description": "Unique identifier for the fixed asset type to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_type_id" + }, + { + "name": "asset_type_update_details", + "required": false, + "description": "JSON object containing details of the fixed asset type to update, including name, accounts, depreciation details, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fixed_asset_type_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the name of fixed asset type" + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "depreciation_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the asset\u2019s depreciation over time." + }, + "depreciation_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method" + }, + "depreciation_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the frequency of depreciation. The available frequencies are: yearly and monthly" + }, + "depreciation_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100" + }, + "total_life": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the total life of the asset (in months)" + }, + "salvage_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the remaining amount of the asset after its useful life or the value after it\u2019s fully depreciated" + }, + "computation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the computation types of assets. The available types are: prorata_basis and no_prorata" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_fixed_asset_type'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassettypes/{fixed_asset_type_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_type_id", + "tool_parameter_name": "fixed_asset_type_identifier", + "description": "Unique identifier of the fixed asset type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset type." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "asset_type_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fixed_asset_type_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the name of fixed asset type" + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the expenses associated with the asset\u2019s depreciation.The available account types are Expense and Other Expense" + }, + "depreciation_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the account id to track the asset\u2019s depreciation over time." + }, + "depreciation_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method" + }, + "depreciation_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the frequency of depreciation. The available frequencies are: yearly and monthly" + }, + "depreciation_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100" + }, + "total_life": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the total life of the asset (in months)" + }, + "salvage_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the remaining amount of the asset after its useful life or the value after it\u2019s fully depreciated" + }, + "computation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the computation types of assets. The available types are: prorata_basis and no_prorata" + } + }, + "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 \"required\": [\n \"fixed_asset_type_name\",\n \"expense_account_id\",\n \"depreciation_account_id\",\n \"depreciation_method\",\n \"depreciation_frequency\",\n \"depreciation_percentage\",\n \"total_life\",\n \"salvage_value\",\n \"computation_type\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"fixed_asset_type_name\": {\n \"description\": \"Enter the name of fixed asset type\",\n \"type\": \"string\",\n \"example\": \"Machines\"\n },\n \"expense_account_id\": {\n \"description\": \"Enter the account id to track the expenses associated with the asset\\u2019s depreciation.The available account types are Expense and Other Expense\",\n \"type\": \"string\",\n \"example\": \"3640355000000000421\"\n },\n \"depreciation_account_id\": {\n \"description\": \"Enter the account id to track the asset\\u2019s depreciation over time.\",\n \"type\": \"string\",\n \"example\": \"3640355000000000367\"\n },\n \"depreciation_method\": {\n \"description\": \"Enter the depreciation method for your asset.The available methods are: declining_method and straight_line.
For US and GLobal Edition: declining_method, straight_line, 200_declining_method and 150_declining_method\",\n \"type\": \"string\",\n \"example\": \"declining_method\"\n },\n \"depreciation_frequency\": {\n \"description\": \"Enter the frequency of depreciation. The available frequencies are: yearly and monthly\",\n \"type\": \"string\",\n \"example\": \"yearly\"\n },\n \"depreciation_percentage\": {\n \"description\": \"Enter the depreciation percentage only if the entered depreciation method is a declining method. The entered percentage should be within the range of 0 to 100\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 12\n },\n \"total_life\": {\n \"description\": \"Enter the total life of the asset (in months)\",\n \"type\": \"number\",\n \"example\": 60\n },\n \"salvage_value\": {\n \"description\": \"Enter the remaining amount of the asset after its useful life or the value after it\\u2019s fully depreciated\",\n \"type\": \"string\",\n \"format\": \"double\",\n \"example\": 100\n },\n \"computation_type\": {\n \"description\": \"Enter the computation types of assets. The available types are: prorata_basis and no_prorata\",\n \"type\": \"string\",\n \"example\": \"prorata_basis\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoice.json new file mode 100644 index 00000000..e4671b2f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoice.json @@ -0,0 +1,1660 @@ +{ + "name": "UpdateInvoice", + "fully_qualified_name": "ZohoBooksApi.UpdateInvoice@0.1.0", + "description": "Update details of an existing invoice in Zoho Books.\n\nUse this tool to modify the details of an existing invoice. If you need to remove a line item, simply exclude it from the line_items list.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization to which the invoice belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_id", + "required": true, + "description": "Unique identifier of the invoice to be updated. Ensure this ID corresponds to an existing invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "invoice_request_data", + "required": false, + "description": "JSON object containing all the details to update the invoice, including customer, currency, line items, and additional options. Use as per API documentation.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer in the current organization for whom this invoice is created. Required when creating an invoice. Use the `customer_id` returned by the get Customers API. Must belong to the organization specified by the `organization_id` parameter." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency in which the invoice will be created for the customer. Use the `currency_id` returned by the Currencies API for the same organization. This sets the currency for all monetary amounts on the invoice; if it differs from the organization's base currency, an appropriate `exchange_rate` may be required." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier or reference number for the invoice. When creating an invoice, this can be a custom number (requires `ignore_auto_number_generation=true` query parameter) or left empty for auto-generation. When searching invoices, supports variants: invoice_number_startswith and invoice_number_contains. Maximum length is 100 characters. Must be unique within the organization." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the invoice .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage. Allowed values:
acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type. Allowed values:
return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "reference_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Associate the reference invoice." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the invoice, such as a purchase order number, contract number, or any other business reference. When converting from an estimate or sales order, this field can be used to reference the original document number." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the invoice. Obtain this value from the `template_id` field in the response of the GET `/invoices/templates` API for your organization. Determines which template is used for the invoice PDF." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the invoice is created. Use the format yyyy-mm-dd (e.g., 2013-11-17). This date appears on the invoice document and is used for accounting purposes. When searching invoices, supports variants: date_start, date_end, date_before and date_after." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment (e.g., 15, 30, 60). This value determines the invoice due date by adding the specified number of days to the invoice date. For example, if invoice date is 2023-11-17 and payment_terms is 15, the due_date will be 2023-12-02. Maximum value is 100 days." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom label for payment terms that appears on the invoice document. Used to override the default system-generated label. For example, instead of the default \"Net 15 Days\", you can set this to \"Net 15\", \"Due in 15 days\", or any custom text. This label is displayed to customers on the invoice. Maximum length is 100 characters." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date by which payment is due for the invoice. Use the format yyyy-mm-dd (e.g., 2013-12-03). This date is typically calculated as invoice date + payment_terms days, but can be overridden with a custom date. When searching invoices, supports variants: due_date_start, due_date_end, due_date_before and due_date_after." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines when the discount is applied in relation to tax calculation. When true, discount is applied before tax calculation (discount reduces the taxable amount). When false, discount is applied after tax calculation (discount reduces the final total including tax). This affects the final invoice total and tax amounts." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the scope of discount application. entity_level applies the discount to the entire invoice total. item_level applies the discount to individual line items. This determines how the discount amount is distributed across the invoice items." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that indicates whether line item rates include tax. When true, the specified rates are inclusive of tax (tax is already included in the rate). When false, the rates are exclusive of tax (tax will be added to the rate). This affects how tax calculations are performed on line items." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate used to convert amounts from the invoice currency to the organization's base currency. Required when the invoice currency differs from the organization's base currency. For example, if base currency is USD and invoice currency is EUR, set the EUR to USD exchange rate (e.g., 1.18). Default value is 1.0 when invoice currency matches base currency." + }, + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice template that generated this invoice. Use this field when creating an invoice from a recurring invoice template. The `recurring_invoice_id` links this invoice back to its source recurring invoice, enabling tracking of which template generated it and maintaining the recurring invoice relationship." + }, + "invoiced_estimate_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate that was converted to create this invoice. Use this field when creating an invoice from an existing estimate. The `invoiced_estimate_id` links this invoice back to its source estimate, enabling tracking of the conversion process and maintaining the relationship between estimates and invoices." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the salesperson. Max-length [200]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an invoice." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) to be included in the invoice line item. Use the `item_id` returned by the Items API for the same organization. This field is required for each line item and determines the item details, pricing, and tax settings that will be applied to this line item." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this line item. Use the `project_id` returned by the Projects API for the same organization. This links the line item to a specific project for project-based billing, time tracking, and cost allocation. Optional field that enables project-specific invoicing and reporting." + }, + "time_entry_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "expense_receipt_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item as it appears on the invoice. Maximum length is 100 characters. Can be customized to override the default item name from the item catalog." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item providing additional information about the product or service. This description appears on the invoice document and helps customers understand what they are being charged for. Maximum length is 2000 characters." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the invoice. Determines the display order of line items on the invoice document. Lower numbers appear first. Used for organizing line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Base currency rate for the line item. This is the rate in the organization's base currency before any currency conversion. Used for multi-currency scenarios where the invoice currency differs from the base currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit rate or price for the line item in the invoice currency. This is the amount charged per unit of the item. The rate is used to calculate the line item total (rate \u00d7 quantity) and affects the final invoice amount." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the item being invoiced. This value is multiplied by the rate to calculate the line item total. Must be a positive number greater than zero." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples include \"Nos\" (Numbers), \"kgs\" (Kilograms), \"hrs\" (Hours), \"pcs\" (Pieces), etc. This helps clarify what the quantity represents. Maximum length is 100 characters." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fixed discount amount applied to this specific line item. This is a monetary value that reduces the line item total. The discount is applied after the rate \u00d7 quantity calculation but before tax calculation. Can be used for line-item specific discounts or promotions." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Array of reporting tags associated with this line item. Each tag consists of a `tag_id` and `tag_option_id` that categorize the line item for reporting and analytics purposes. Tags help organize and filter data across reports and enable detailed business intelligence analysis." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header or category that groups related line items together. This is used for organizational purposes to categorize and group similar items on the invoice. For example, \"Electronic devices\", \"Office supplies\", or \"Professional services\". This helps in organizing and presenting line items in a structured manner on the invoice document." + }, + "header_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item header" + } + }, + "description": null + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway has been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether customers can make partial payments against this invoice. When true, customers can pay less than the full invoice amount, and the invoice will remain open with a remaining balance. When false, customers must pay the full amount to complete the invoice. This setting affects payment processing and invoice status tracking." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the invoice document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the invoice PDF and are visible to customers" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the invoice document. This field is used to specify payment terms, delivery conditions, return policies, or any other legal or business terms that apply to this transaction. The terms appear on the invoice PDF and are legally binding." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the invoice. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the invoice total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the invoice total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final invoice total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the invoice document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "salesorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The line item id" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_invoice_number_generation", + "required": false, + "description": "Set to true to ignore automatic invoice number generation, requiring manual entry of the invoice number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto invoice number generation for this invoice. This mandates the invoice number. Allowed values true and false" + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_invoice_number_generation", + "description": "Ignore auto invoice number generation for this invoice. This mandates the invoice number. Allowed values true and false", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto invoice number generation for this invoice. This mandates the invoice number. Allowed values true and false" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_id", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_request_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer in the current organization for whom this invoice is created. Required when creating an invoice. Use the `customer_id` returned by the get Customers API. Must belong to the organization specified by the `organization_id` parameter." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency in which the invoice will be created for the customer. Use the `currency_id` returned by the Currencies API for the same organization. This sets the currency for all monetary amounts on the invoice; if it differs from the organization's base currency, an appropriate `exchange_rate` may be required." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier or reference number for the invoice. When creating an invoice, this can be a custom number (requires `ignore_auto_number_generation=true` query parameter) or left empty for auto-generation. When searching invoices, supports variants: invoice_number_startswith and invoice_number_contains. Maximum length is 100 characters. Must be unique within the organization." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the invoice .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage. Allowed values:
acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type. Allowed values:
return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "reference_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Associate the reference invoice." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the invoice, such as a purchase order number, contract number, or any other business reference. When converting from an estimate or sales order, this field can be used to reference the original document number." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the invoice. Obtain this value from the `template_id` field in the response of the GET `/invoices/templates` API for your organization. Determines which template is used for the invoice PDF." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the invoice is created. Use the format yyyy-mm-dd (e.g., 2013-11-17). This date appears on the invoice document and is used for accounting purposes. When searching invoices, supports variants: date_start, date_end, date_before and date_after." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment (e.g., 15, 30, 60). This value determines the invoice due date by adding the specified number of days to the invoice date. For example, if invoice date is 2023-11-17 and payment_terms is 15, the due_date will be 2023-12-02. Maximum value is 100 days." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom label for payment terms that appears on the invoice document. Used to override the default system-generated label. For example, instead of the default \"Net 15 Days\", you can set this to \"Net 15\", \"Due in 15 days\", or any custom text. This label is displayed to customers on the invoice. Maximum length is 100 characters." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date by which payment is due for the invoice. Use the format yyyy-mm-dd (e.g., 2013-12-03). This date is typically calculated as invoice date + payment_terms days, but can be overridden with a custom date. When searching invoices, supports variants: due_date_start, due_date_end, due_date_before and due_date_after." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines when the discount is applied in relation to tax calculation. When true, discount is applied before tax calculation (discount reduces the taxable amount). When false, discount is applied after tax calculation (discount reduces the final total including tax). This affects the final invoice total and tax amounts." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the scope of discount application. entity_level applies the discount to the entire invoice total. item_level applies the discount to individual line items. This determines how the discount amount is distributed across the invoice items." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that indicates whether line item rates include tax. When true, the specified rates are inclusive of tax (tax is already included in the rate). When false, the rates are exclusive of tax (tax will be added to the rate). This affects how tax calculations are performed on line items." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate used to convert amounts from the invoice currency to the organization's base currency. Required when the invoice currency differs from the organization's base currency. For example, if base currency is USD and invoice currency is EUR, set the EUR to USD exchange rate (e.g., 1.18). Default value is 1.0 when invoice currency matches base currency." + }, + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice template that generated this invoice. Use this field when creating an invoice from a recurring invoice template. The `recurring_invoice_id` links this invoice back to its source recurring invoice, enabling tracking of which template generated it and maintaining the recurring invoice relationship." + }, + "invoiced_estimate_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate that was converted to create this invoice. Use this field when creating an invoice from an existing estimate. The `invoiced_estimate_id` links this invoice back to its source estimate, enabling tracking of the conversion process and maintaining the relationship between estimates and invoices." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the salesperson. Max-length [200]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an invoice." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) to be included in the invoice line item. Use the `item_id` returned by the Items API for the same organization. This field is required for each line item and determines the item details, pricing, and tax settings that will be applied to this line item." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this line item. Use the `project_id` returned by the Projects API for the same organization. This links the line item to a specific project for project-based billing, time tracking, and cost allocation. Optional field that enables project-specific invoicing and reporting." + }, + "time_entry_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "expense_receipt_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item as it appears on the invoice. Maximum length is 100 characters. Can be customized to override the default item name from the item catalog." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item providing additional information about the product or service. This description appears on the invoice document and helps customers understand what they are being charged for. Maximum length is 2000 characters." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the invoice. Determines the display order of line items on the invoice document. Lower numbers appear first. Used for organizing line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Base currency rate for the line item. This is the rate in the organization's base currency before any currency conversion. Used for multi-currency scenarios where the invoice currency differs from the base currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit rate or price for the line item in the invoice currency. This is the amount charged per unit of the item. The rate is used to calculate the line item total (rate \u00d7 quantity) and affects the final invoice amount." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the item being invoiced. This value is multiplied by the rate to calculate the line item total. Must be a positive number greater than zero." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples include \"Nos\" (Numbers), \"kgs\" (Kilograms), \"hrs\" (Hours), \"pcs\" (Pieces), etc. This helps clarify what the quantity represents. Maximum length is 100 characters." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fixed discount amount applied to this specific line item. This is a monetary value that reduces the line item total. The discount is applied after the rate \u00d7 quantity calculation but before tax calculation. Can be used for line-item specific discounts or promotions." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Array of reporting tags associated with this line item. Each tag consists of a `tag_id` and `tag_option_id` that categorize the line item for reporting and analytics purposes. Tags help organize and filter data across reports and enable detailed business intelligence analysis." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header or category that groups related line items together. This is used for organizational purposes to categorize and group similar items on the invoice. For example, \"Electronic devices\", \"Office supplies\", or \"Professional services\". This helps in organizing and presenting line items in a structured manner on the invoice document." + }, + "header_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item header" + } + }, + "description": null + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway has been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether customers can make partial payments against this invoice. When true, customers can pay less than the full invoice amount, and the invoice will remain open with a remaining balance. When false, customers must pay the full amount to complete the invoice. This setting affects payment processing and invoice status tracking." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the invoice document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the invoice PDF and are visible to customers" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the invoice document. This field is used to specify payment terms, delivery conditions, return policies, or any other legal or business terms that apply to this transaction. The terms appear on the invoice PDF and are legally binding." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the invoice. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the invoice total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the invoice total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final invoice total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the invoice document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "salesorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The line item id" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier of the customer in the current organization for whom this invoice is created. Required when creating an invoice. Use the `customer_id` returned by the get Customers API. Must belong to the organization specified by the `organization_id` parameter.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"currency_id\": {\n \"description\": \"Unique identifier of the currency in which the invoice will be created for the customer. Use the `currency_id` returned by the Currencies API for the same organization. This sets the currency for all monetary amounts on the invoice; if it differs from the organization's base currency, an appropriate `exchange_rate` may be required.\",\n \"type\": \"string\",\n \"example\": 982000000000190\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"invoice_number\": {\n \"description\": \"Unique identifier or reference number for the invoice. When creating an invoice, this can be a custom number (requires `ignore_auto_number_generation=true` query parameter) or left empty for auto-generation. When searching invoices, supports variants: invoice_number_startswith and invoice_number_contains. Maximum length is 100 characters. Must be unique within the organization.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the invoice .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_usage\": {\n \"description\": \"Choose CFDI Usage. Allowed values:
acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll.\",\n \"type\": \"string\",\n \"example\": \"acquisition_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_reference_type\": {\n \"description\": \"Choose CFDI Reference Type. Allowed values:
return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance.\",\n \"type\": \"string\",\n \"example\": \"return_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reference_invoice_id\": {\n \"description\": \"Associate the reference invoice.\",\n \"type\": \"string\",\n \"example\": \"132738000000126013\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reference_number\": {\n \"description\": \"External reference number or identifier for the invoice, such as a purchase order number, contract number, or any other business reference. When converting from an estimate or sales order, this field can be used to reference the original document number.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"template_id\": {\n \"description\": \"Unique identifier of the PDF template linked to the invoice. Obtain this value from the `template_id` field in the response of the GET `/invoices/templates` API for your organization. Determines which template is used for the invoice PDF.\",\n \"type\": \"string\",\n \"example\": 982000000000143\n },\n \"date\": {\n \"description\": \"The date on which the invoice is created. Use the format yyyy-mm-dd (e.g., 2013-11-17). This date appears on the invoice document and is used for accounting purposes. When searching invoices, supports variants: date_start, date_end, date_before and date_after.\",\n \"type\": \"string\",\n \"example\": \"2013-11-17\"\n },\n \"payment_terms\": {\n \"description\": \"Number of days allowed for payment (e.g., 15, 30, 60). This value determines the invoice due date by adding the specified number of days to the invoice date. For example, if invoice date is 2023-11-17 and payment_terms is 15, the due_date will be 2023-12-02. Maximum value is 100 days.\",\n \"type\": \"integer\",\n \"example\": 15\n },\n \"payment_terms_label\": {\n \"description\": \"Custom label for payment terms that appears on the invoice document. Used to override the default system-generated label. For example, instead of the default \\\"Net 15 Days\\\", you can set this to \\\"Net 15\\\", \\\"Due in 15 days\\\", or any custom text. This label is displayed to customers on the invoice. Maximum length is 100 characters.\",\n \"type\": \"string\",\n \"example\": \"Net 15\"\n },\n \"due_date\": {\n \"description\": \"The date by which payment is due for the invoice. Use the format yyyy-mm-dd (e.g., 2013-12-03). This date is typically calculated as invoice date + payment_terms days, but can be overridden with a custom date. When searching invoices, supports variants: due_date_start, due_date_end, due_date_before and due_date_after.\",\n \"type\": \"string\",\n \"example\": \"2013-12-03\"\n },\n \"discount\": {\n \"description\": \"Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \\u2014 up to a maximum of 100% \\u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level).\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"is_discount_before_tax\": {\n \"description\": \"Boolean flag that determines when the discount is applied in relation to tax calculation. When true, discount is applied before tax calculation (discount reduces the taxable amount). When false, discount is applied after tax calculation (discount reduces the final total including tax). This affects the final invoice total and tax amounts.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"Specifies the scope of discount application. entity_level applies the discount to the entire invoice total. item_level applies the discount to individual line items. This determines how the discount amount is distributed across the invoice items.\",\n \"type\": \"string\",\n \"example\": \"item_level\"\n },\n \"is_inclusive_tax\": {\n \"description\": \"Boolean flag that indicates whether line item rates include tax. When true, the specified rates are inclusive of tax (tax is already included in the rate). When false, the rates are exclusive of tax (tax will be added to the rate). This affects how tax calculations are performed on line items.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate used to convert amounts from the invoice currency to the organization's base currency. Required when the invoice currency differs from the organization's base currency. For example, if base currency is USD and invoice currency is EUR, set the EUR to USD exchange rate (e.g., 1.18). Default value is 1.0 when invoice currency matches base currency.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 1\n },\n \"recurring_invoice_id\": {\n \"description\": \"Unique identifier of the recurring invoice template that generated this invoice. Use this field when creating an invoice from a recurring invoice template. The `recurring_invoice_id` links this invoice back to its source recurring invoice, enabling tracking of which template generated it and maintaining the recurring invoice relationship.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"invoiced_estimate_id\": {\n \"description\": \"Unique identifier of the estimate that was converted to create this invoice. Use this field when creating an invoice from an existing estimate. The `invoiced_estimate_id` links this invoice back to its source estimate, enabling tracking of the conversion process and maintaining the relationship between estimates and invoices.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"salesperson_name\": {\n \"description\": \"Name of the salesperson. Max-length [200]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"item_id\"\n ],\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier of the item (product or service) to be included in the invoice line item. Use the `item_id` returned by the Items API for the same organization. This field is required for each line item and determines the item details, pricing, and tax settings that will be applied to this line item.\",\n \"type\": \"string\",\n \"example\": 982000000030049\n },\n \"project_id\": {\n \"description\": \"Unique identifier of the project associated with this line item. Use the `project_id` returned by the Projects API for the same organization. This links the line item to a specific project for project-based billing, time tracking, and cost allocation. Optional field that enables project-specific invoicing and reporting.\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"time_entry_ids\": {\n \"description\": \"Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": []\n },\n \"product_type\": {\n \"description\": \"Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations.\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"E48\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"expense_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion.\",\n \"example\": \"460000000028080\"\n },\n \"expense_receipt_name\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item as it appears on the invoice. Maximum length is 100 characters. Can be customized to override the default item name from the item catalog.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item providing additional information about the product or service. This description appears on the invoice document and helps customers understand what they are being charged for. Maximum length is 2000 characters.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"item_order\": {\n \"description\": \"Sequential order number for this line item on the invoice. Determines the display order of line items on the invoice document. Lower numbers appear first. Used for organizing line items in a specific sequence.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"bcy_rate\": {\n \"description\": \"Base currency rate for the line item. This is the rate in the organization's base currency before any currency conversion. Used for multi-currency scenarios where the invoice currency differs from the base currency.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 120\n },\n \"rate\": {\n \"description\": \"Unit rate or price for the line item in the invoice currency. This is the amount charged per unit of the item. The rate is used to calculate the line item total (rate \\u00d7 quantity) and affects the final invoice amount.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"quantity\": {\n \"description\": \"Number of units of the item being invoiced. This value is multiplied by the rate to calculate the line item total. Must be a positive number greater than zero.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the line item quantity. Examples include \\\"Nos\\\" (Numbers), \\\"kgs\\\" (Kilograms), \\\"hrs\\\" (Hours), \\\"pcs\\\" (Pieces), etc. This helps clarify what the quantity represents. Maximum length is 100 characters.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"discount_amount\": {\n \"description\": \"Fixed discount amount applied to this specific line item. This is a monetary value that reduces the line item total. The discount is applied after the rate \\u00d7 quantity calculation but before tax calculation. Can be used for line-item specific discounts or promotions.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"tags\": {\n \"description\": \"Array of reporting tags associated with this line item. Each tag consists of a `tag_id` and `tag_option_id` that categorize the line item for reporting and analytics purposes. Tags help organize and filter data across reports and enable detailed business intelligence analysis.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 982000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 982000000002670\n }\n }\n }\n },\n \"discount\": {\n \"description\": \"Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \\u2014 up to a maximum of 100% \\u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level).\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax.\",\n \"type\": \"string\",\n \"example\": \"982000000557012\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_name\": {\n \"description\": \"The name of the tax\",\n \"type\": \"string\",\n \"example\": \"VAT\"\n },\n \"tax_type\": {\n \"description\": \"The type of the tax\",\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_percentage\": {\n \"description\": \"The percentage of tax levied\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 12.5\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"header_name\": {\n \"description\": \"Name of the item header or category that groups related line items together. This is used for organizational purposes to categorize and group similar items on the invoice. For example, \\\"Electronic devices\\\", \\\"Office supplies\\\", or \\\"Professional services\\\". This helps in organizing and presenting line items in a structured manner on the invoice document.\",\n \"type\": \"string\",\n \"example\": \"Electronic devices\"\n },\n \"header_id\": {\n \"description\": \"ID of the item header\",\n \"type\": \"string\",\n \"example\": 982000000000670\n }\n }\n }\n },\n \"payment_options\": {\n \"description\": \"Payment options for the invoice, online payment gateways and bank accounts. Will be displayed in the pdf.\",\n \"type\": \"object\",\n \"properties\": {\n \"payment_gateways\": {\n \"description\": \"Online payment gateways through which payment can be made.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"configured\": {\n \"description\": \"Boolean check to see if a payment gateway has been configured\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"additional_field1\": {\n \"description\": \"Paypal payment method. Allowed Values: standard and adaptive\",\n \"type\": \"string\",\n \"example\": \"standard\"\n },\n \"gateway_name\": {\n \"description\": \"Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree\",\n \"type\": \"string\",\n \"example\": \"paypal\"\n }\n }\n }\n }\n }\n },\n \"allow_partial_payments\": {\n \"description\": \"Boolean flag that determines whether customers can make partial payments against this invoice. When true, customers can pay less than the full invoice amount, and the invoice will remain open with a remaining balance. When false, customers must pay the full amount to complete the invoice. This setting affects payment processing and invoice status tracking.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"custom_body\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_subject\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"notes\": {\n \"description\": \"Additional information or comments to be displayed on the invoice document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the invoice PDF and are visible to customers\",\n \"type\": \"string\",\n \"example\": \"Looking forward for your business.\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions text to be displayed on the invoice document. This field is used to specify payment terms, delivery conditions, return policies, or any other legal or business terms that apply to this transaction. The terms appear on the invoice PDF and are legally binding.\",\n \"type\": \"string\",\n \"example\": \"Terms & Conditions apply\"\n },\n \"shipping_charge\": {\n \"description\": \"Additional shipping or delivery charges applied to the invoice. Must be specified as a fixed amount (e.g., \\\"25.00\\\"). This amount is added to the invoice total and is subject to tax calculation.\",\n \"type\": \"string\",\n \"example\": 0\n },\n \"adjustment\": {\n \"description\": \"Additional charge or credit amount applied to the invoice total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final invoice total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Text description explaining the reason for the adjustment amount. This description appears on the invoice document to explain why the adjustment was applied. Common examples include \\\"Rounding adjustment\\\", \\\"Handling fee\\\", \\\"Early payment discount\\\", or \\\"Late payment fee\\\". This helps customers understand the purpose of the adjustment.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"reason\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": 11149000000061052,\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": 11149000000061054,\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"expense_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion.\",\n \"example\": \"460000000028080\"\n },\n \"salesorder_item_id\": {\n \"description\": \"Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"line_item_id\": {\n \"description\": \"The line item id\",\n \"type\": \"string\",\n \"example\": 982000000567021\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceByCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceByCustomField.json new file mode 100644 index 00000000..0f0e8202 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceByCustomField.json @@ -0,0 +1,1693 @@ +{ + "name": "UpdateInvoiceByCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateInvoiceByCustomField@0.1.0", + "description": "Update or create an invoice using a custom field value.\n\nCall this tool to update an existing invoice or create a new one using a custom field's unique value. If the value is not found and X-Upsert is true, a new invoice will be created if all required details are provided.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. This is required to specify which organization's invoice should be updated or created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_api_name", + "required": true, + "description": "The API name of the unique custom field used to locate the invoice to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "custom_field_value", + "required": true, + "description": "The unique value of the custom field used to find or create the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "invoice_details", + "required": false, + "description": "JSON with details for updating or creating an invoice. Include customer_id, currency_id, line items, payment terms, and any other necessary attributes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer in the current organization for whom this invoice is created. Required when creating an invoice. Use the `customer_id` returned by the get Customers API. Must belong to the organization specified by the `organization_id` parameter." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency in which the invoice will be created for the customer. Use the `currency_id` returned by the Currencies API for the same organization. This sets the currency for all monetary amounts on the invoice; if it differs from the organization's base currency, an appropriate `exchange_rate` may be required." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier or reference number for the invoice. When creating an invoice, this can be a custom number (requires `ignore_auto_number_generation=true` query parameter) or left empty for auto-generation. When searching invoices, supports variants: invoice_number_startswith and invoice_number_contains. Maximum length is 100 characters. Must be unique within the organization." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the invoice .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage. Allowed values:
acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type. Allowed values:
return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "reference_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Associate the reference invoice." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the invoice, such as a purchase order number, contract number, or any other business reference. When converting from an estimate or sales order, this field can be used to reference the original document number." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the invoice. Obtain this value from the `template_id` field in the response of the GET `/invoices/templates` API for your organization. Determines which template is used for the invoice PDF." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the invoice is created. Use the format yyyy-mm-dd (e.g., 2013-11-17). This date appears on the invoice document and is used for accounting purposes. When searching invoices, supports variants: date_start, date_end, date_before and date_after." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment (e.g., 15, 30, 60). This value determines the invoice due date by adding the specified number of days to the invoice date. For example, if invoice date is 2023-11-17 and payment_terms is 15, the due_date will be 2023-12-02. Maximum value is 100 days." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom label for payment terms that appears on the invoice document. Used to override the default system-generated label. For example, instead of the default \"Net 15 Days\", you can set this to \"Net 15\", \"Due in 15 days\", or any custom text. This label is displayed to customers on the invoice. Maximum length is 100 characters." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date by which payment is due for the invoice. Use the format yyyy-mm-dd (e.g., 2013-12-03). This date is typically calculated as invoice date + payment_terms days, but can be overridden with a custom date. When searching invoices, supports variants: due_date_start, due_date_end, due_date_before and due_date_after." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines when the discount is applied in relation to tax calculation. When true, discount is applied before tax calculation (discount reduces the taxable amount). When false, discount is applied after tax calculation (discount reduces the final total including tax). This affects the final invoice total and tax amounts." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the scope of discount application. entity_level applies the discount to the entire invoice total. item_level applies the discount to individual line items. This determines how the discount amount is distributed across the invoice items." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that indicates whether line item rates include tax. When true, the specified rates are inclusive of tax (tax is already included in the rate). When false, the rates are exclusive of tax (tax will be added to the rate). This affects how tax calculations are performed on line items." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate used to convert amounts from the invoice currency to the organization's base currency. Required when the invoice currency differs from the organization's base currency. For example, if base currency is USD and invoice currency is EUR, set the EUR to USD exchange rate (e.g., 1.18). Default value is 1.0 when invoice currency matches base currency." + }, + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice template that generated this invoice. Use this field when creating an invoice from a recurring invoice template. The `recurring_invoice_id` links this invoice back to its source recurring invoice, enabling tracking of which template generated it and maintaining the recurring invoice relationship." + }, + "invoiced_estimate_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate that was converted to create this invoice. Use this field when creating an invoice from an existing estimate. The `invoiced_estimate_id` links this invoice back to its source estimate, enabling tracking of the conversion process and maintaining the relationship between estimates and invoices." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the salesperson. Max-length [200]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an invoice." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) to be included in the invoice line item. Use the `item_id` returned by the Items API for the same organization. This field is required for each line item and determines the item details, pricing, and tax settings that will be applied to this line item." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this line item. Use the `project_id` returned by the Projects API for the same organization. This links the line item to a specific project for project-based billing, time tracking, and cost allocation. Optional field that enables project-specific invoicing and reporting." + }, + "time_entry_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "expense_receipt_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item as it appears on the invoice. Maximum length is 100 characters. Can be customized to override the default item name from the item catalog." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item providing additional information about the product or service. This description appears on the invoice document and helps customers understand what they are being charged for. Maximum length is 2000 characters." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the invoice. Determines the display order of line items on the invoice document. Lower numbers appear first. Used for organizing line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Base currency rate for the line item. This is the rate in the organization's base currency before any currency conversion. Used for multi-currency scenarios where the invoice currency differs from the base currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit rate or price for the line item in the invoice currency. This is the amount charged per unit of the item. The rate is used to calculate the line item total (rate \u00d7 quantity) and affects the final invoice amount." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the item being invoiced. This value is multiplied by the rate to calculate the line item total. Must be a positive number greater than zero." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples include \"Nos\" (Numbers), \"kgs\" (Kilograms), \"hrs\" (Hours), \"pcs\" (Pieces), etc. This helps clarify what the quantity represents. Maximum length is 100 characters." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fixed discount amount applied to this specific line item. This is a monetary value that reduces the line item total. The discount is applied after the rate \u00d7 quantity calculation but before tax calculation. Can be used for line-item specific discounts or promotions." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Array of reporting tags associated with this line item. Each tag consists of a `tag_id` and `tag_option_id` that categorize the line item for reporting and analytics purposes. Tags help organize and filter data across reports and enable detailed business intelligence analysis." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header or category that groups related line items together. This is used for organizational purposes to categorize and group similar items on the invoice. For example, \"Electronic devices\", \"Office supplies\", or \"Professional services\". This helps in organizing and presenting line items in a structured manner on the invoice document." + }, + "header_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item header" + } + }, + "description": null + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway has been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether customers can make partial payments against this invoice. When true, customers can pay less than the full invoice amount, and the invoice will remain open with a remaining balance. When false, customers must pay the full amount to complete the invoice. This setting affects payment processing and invoice status tracking." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the invoice document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the invoice PDF and are visible to customers" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the invoice document. This field is used to specify payment terms, delivery conditions, return policies, or any other legal or business terms that apply to this transaction. The terms appear on the invoice PDF and are legally binding." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the invoice. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the invoice total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the invoice total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final invoice total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the invoice document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "salesorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The line item id" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_new_invoice_if_not_found", + "required": false, + "description": "Set to true to create a new invoice if the unique custom field value is not found in existing invoices.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_invoice_using_custom_field'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_new_invoice_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer in the current organization for whom this invoice is created. Required when creating an invoice. Use the `customer_id` returned by the get Customers API. Must belong to the organization specified by the `organization_id` parameter." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency in which the invoice will be created for the customer. Use the `currency_id` returned by the Currencies API for the same organization. This sets the currency for all monetary amounts on the invoice; if it differs from the organization's base currency, an appropriate `exchange_rate` may be required." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "invoice_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier or reference number for the invoice. When creating an invoice, this can be a custom number (requires `ignore_auto_number_generation=true` query parameter) or left empty for auto-generation. When searching invoices, supports variants: invoice_number_startswith and invoice_number_contains. Maximum length is 100 characters. Must be unique within the organization." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the invoice .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage. Allowed values:
acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "cfdi_reference_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Reference Type. Allowed values:
return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance." + }, + "reference_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Associate the reference invoice." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the invoice, such as a purchase order number, contract number, or any other business reference. When converting from an estimate or sales order, this field can be used to reference the original document number." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the invoice. Obtain this value from the `template_id` field in the response of the GET `/invoices/templates` API for your organization. Determines which template is used for the invoice PDF." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the invoice is created. Use the format yyyy-mm-dd (e.g., 2013-11-17). This date appears on the invoice document and is used for accounting purposes. When searching invoices, supports variants: date_start, date_end, date_before and date_after." + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of days allowed for payment (e.g., 15, 30, 60). This value determines the invoice due date by adding the specified number of days to the invoice date. For example, if invoice date is 2023-11-17 and payment_terms is 15, the due_date will be 2023-12-02. Maximum value is 100 days." + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom label for payment terms that appears on the invoice document. Used to override the default system-generated label. For example, instead of the default \"Net 15 Days\", you can set this to \"Net 15\", \"Due in 15 days\", or any custom text. This label is displayed to customers on the invoice. Maximum length is 100 characters." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date by which payment is due for the invoice. Use the format yyyy-mm-dd (e.g., 2013-12-03). This date is typically calculated as invoice date + payment_terms days, but can be overridden with a custom date. When searching invoices, supports variants: due_date_start, due_date_end, due_date_before and due_date_after." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines when the discount is applied in relation to tax calculation. When true, discount is applied before tax calculation (discount reduces the taxable amount). When false, discount is applied after tax calculation (discount reduces the final total including tax). This affects the final invoice total and tax amounts." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the scope of discount application. entity_level applies the discount to the entire invoice total. item_level applies the discount to individual line items. This determines how the discount amount is distributed across the invoice items." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that indicates whether line item rates include tax. When true, the specified rates are inclusive of tax (tax is already included in the rate). When false, the rates are exclusive of tax (tax will be added to the rate). This affects how tax calculations are performed on line items." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate used to convert amounts from the invoice currency to the organization's base currency. Required when the invoice currency differs from the organization's base currency. For example, if base currency is USD and invoice currency is EUR, set the EUR to USD exchange rate (e.g., 1.18). Default value is 1.0 when invoice currency matches base currency." + }, + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice template that generated this invoice. Use this field when creating an invoice from a recurring invoice template. The `recurring_invoice_id` links this invoice back to its source recurring invoice, enabling tracking of which template generated it and maintaining the recurring invoice relationship." + }, + "invoiced_estimate_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the estimate that was converted to create this invoice. Use this field when creating an invoice from an existing estimate. The `invoiced_estimate_id` links this invoice back to its source estimate, enabling tracking of the conversion process and maintaining the relationship between estimates and invoices." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the salesperson. Max-length [200]" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an invoice." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item (product or service) to be included in the invoice line item. Use the `item_id` returned by the Items API for the same organization. This field is required for each line item and determines the item details, pricing, and tax settings that will be applied to this line item." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project associated with this line item. Use the `project_id` returned by the Projects API for the same organization. This links the line item to a specific project for project-based billing, time tracking, and cost allocation. Optional field that enables project-specific invoicing and reporting." + }, + "time_entry_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "expense_receipt_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item as it appears on the invoice. Maximum length is 100 characters. Can be customized to override the default item name from the item catalog." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item providing additional information about the product or service. This description appears on the invoice document and helps customers understand what they are being charged for. Maximum length is 2000 characters." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for this line item on the invoice. Determines the display order of line items on the invoice document. Lower numbers appear first. Used for organizing line items in a specific sequence." + }, + "bcy_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Base currency rate for the line item. This is the rate in the organization's base currency before any currency conversion. Used for multi-currency scenarios where the invoice currency differs from the base currency." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit rate or price for the line item in the invoice currency. This is the amount charged per unit of the item. The rate is used to calculate the line item total (rate \u00d7 quantity) and affects the final invoice amount." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units of the item being invoiced. This value is multiplied by the rate to calculate the line item total. Must be a positive number greater than zero." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples include \"Nos\" (Numbers), \"kgs\" (Kilograms), \"hrs\" (Hours), \"pcs\" (Pieces), etc. This helps clarify what the quantity represents. Maximum length is 100 characters." + }, + "discount_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fixed discount amount applied to this specific line item. This is a monetary value that reduces the line item total. The discount is applied after the rate \u00d7 quantity calculation but before tax calculation. Can be used for line-item specific discounts or promotions." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Array of reporting tags associated with this line item. Each tag consists of a `tag_id` and `tag_option_id` that categorize the line item for reporting and analytics purposes. Tags help organize and filter data across reports and enable detailed business intelligence analysis." + }, + "discount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \u2014 up to a maximum of 100% \u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level)." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax." + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the tax" + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The percentage of tax levied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header or category that groups related line items together. This is used for organizational purposes to categorize and group similar items on the invoice. For example, \"Electronic devices\", \"Office supplies\", or \"Professional services\". This helps in organizing and presenting line items in a structured manner on the invoice document." + }, + "header_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item header" + } + }, + "description": null + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway has been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": "Online payment gateways through which payment can be made." + } + }, + "inner_properties": null, + "description": "Payment options for the invoice, online payment gateways and bank accounts. Will be displayed in the pdf." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether customers can make partial payments against this invoice. When true, customers can pay less than the full invoice amount, and the invoice will remain open with a remaining balance. When false, customers must pay the full amount to complete the invoice. This setting affects payment processing and invoice status tracking." + }, + "custom_body": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_subject": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information or comments to be displayed on the invoice document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the invoice PDF and are visible to customers" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the invoice document. This field is used to specify payment terms, delivery conditions, return policies, or any other legal or business terms that apply to this transaction. The terms appear on the invoice PDF and are legally binding." + }, + "shipping_charge": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional shipping or delivery charges applied to the invoice. Must be specified as a fixed amount (e.g., \"25.00\"). This amount is added to the invoice total and is subject to tax calculation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional charge or credit amount applied to the invoice total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final invoice total." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text description explaining the reason for the adjustment amount. This description appears on the invoice document to explain why the adjustment was applied. Common examples include \"Rounding adjustment\", \"Handling fee\", \"Early payment discount\", or \"Late payment fee\". This helps customers understand the purpose of the adjustment." + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting." + }, + "expense_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion." + }, + "salesorder_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]" + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The line item id" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier of the customer in the current organization for whom this invoice is created. Required when creating an invoice. Use the `customer_id` returned by the get Customers API. Must belong to the organization specified by the `organization_id` parameter.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"currency_id\": {\n \"description\": \"Unique identifier of the currency in which the invoice will be created for the customer. Use the `currency_id` returned by the Currencies API for the same organization. This sets the currency for all monetary amounts on the invoice; if it differs from the organization's base currency, an appropriate `exchange_rate` may be required.\",\n \"type\": \"string\",\n \"example\": 982000000000190\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"invoice_number\": {\n \"description\": \"Unique identifier or reference number for the invoice. When creating an invoice, this can be a custom number (requires `ignore_auto_number_generation=true` query parameter) or left empty for auto-generation. When searching invoices, supports variants: invoice_number_startswith and invoice_number_contains. Maximum length is 100 characters. Must be unique within the organization.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the invoice .Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_usage\": {\n \"description\": \"Choose CFDI Usage. Allowed values:
acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll.\",\n \"type\": \"string\",\n \"example\": \"acquisition_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_reference_type\": {\n \"description\": \"Choose CFDI Reference Type. Allowed values:
return_of_merchandise, substitution_previous_cfdi, transfer_of_goods, invoice_generated_from_order, cfdi_for_advance.\",\n \"type\": \"string\",\n \"example\": \"return_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reference_invoice_id\": {\n \"description\": \"Associate the reference invoice.\",\n \"type\": \"string\",\n \"example\": \"132738000000126013\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reference_number\": {\n \"description\": \"External reference number or identifier for the invoice, such as a purchase order number, contract number, or any other business reference. When converting from an estimate or sales order, this field can be used to reference the original document number.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"template_id\": {\n \"description\": \"Unique identifier of the PDF template linked to the invoice. Obtain this value from the `template_id` field in the response of the GET `/invoices/templates` API for your organization. Determines which template is used for the invoice PDF.\",\n \"type\": \"string\",\n \"example\": 982000000000143\n },\n \"date\": {\n \"description\": \"The date on which the invoice is created. Use the format yyyy-mm-dd (e.g., 2013-11-17). This date appears on the invoice document and is used for accounting purposes. When searching invoices, supports variants: date_start, date_end, date_before and date_after.\",\n \"type\": \"string\",\n \"example\": \"2013-11-17\"\n },\n \"payment_terms\": {\n \"description\": \"Number of days allowed for payment (e.g., 15, 30, 60). This value determines the invoice due date by adding the specified number of days to the invoice date. For example, if invoice date is 2023-11-17 and payment_terms is 15, the due_date will be 2023-12-02. Maximum value is 100 days.\",\n \"type\": \"integer\",\n \"example\": 15\n },\n \"payment_terms_label\": {\n \"description\": \"Custom label for payment terms that appears on the invoice document. Used to override the default system-generated label. For example, instead of the default \\\"Net 15 Days\\\", you can set this to \\\"Net 15\\\", \\\"Due in 15 days\\\", or any custom text. This label is displayed to customers on the invoice. Maximum length is 100 characters.\",\n \"type\": \"string\",\n \"example\": \"Net 15\"\n },\n \"due_date\": {\n \"description\": \"The date by which payment is due for the invoice. Use the format yyyy-mm-dd (e.g., 2013-12-03). This date is typically calculated as invoice date + payment_terms days, but can be overridden with a custom date. When searching invoices, supports variants: due_date_start, due_date_end, due_date_before and due_date_after.\",\n \"type\": \"string\",\n \"example\": \"2013-12-03\"\n },\n \"discount\": {\n \"description\": \"Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \\u2014 up to a maximum of 100% \\u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level).\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"is_discount_before_tax\": {\n \"description\": \"Boolean flag that determines when the discount is applied in relation to tax calculation. When true, discount is applied before tax calculation (discount reduces the taxable amount). When false, discount is applied after tax calculation (discount reduces the final total including tax). This affects the final invoice total and tax amounts.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"Specifies the scope of discount application. entity_level applies the discount to the entire invoice total. item_level applies the discount to individual line items. This determines how the discount amount is distributed across the invoice items.\",\n \"type\": \"string\",\n \"example\": \"item_level\"\n },\n \"is_inclusive_tax\": {\n \"description\": \"Boolean flag that indicates whether line item rates include tax. When true, the specified rates are inclusive of tax (tax is already included in the rate). When false, the rates are exclusive of tax (tax will be added to the rate). This affects how tax calculations are performed on line items.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate used to convert amounts from the invoice currency to the organization's base currency. Required when the invoice currency differs from the organization's base currency. For example, if base currency is USD and invoice currency is EUR, set the EUR to USD exchange rate (e.g., 1.18). Default value is 1.0 when invoice currency matches base currency.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 1\n },\n \"recurring_invoice_id\": {\n \"description\": \"Unique identifier of the recurring invoice template that generated this invoice. Use this field when creating an invoice from a recurring invoice template. The `recurring_invoice_id` links this invoice back to its source recurring invoice, enabling tracking of which template generated it and maintaining the recurring invoice relationship.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"invoiced_estimate_id\": {\n \"description\": \"Unique identifier of the estimate that was converted to create this invoice. Use this field when creating an invoice from an existing estimate. The `invoiced_estimate_id` links this invoice back to its source estimate, enabling tracking of the conversion process and maintaining the relationship between estimates and invoices.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"salesperson_name\": {\n \"description\": \"Name of the salesperson. Max-length [200]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"item_id\"\n ],\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier of the item (product or service) to be included in the invoice line item. Use the `item_id` returned by the Items API for the same organization. This field is required for each line item and determines the item details, pricing, and tax settings that will be applied to this line item.\",\n \"type\": \"string\",\n \"example\": 982000000030049\n },\n \"project_id\": {\n \"description\": \"Unique identifier of the project associated with this line item. Use the `project_id` returned by the Projects API for the same organization. This links the line item to a specific project for project-based billing, time tracking, and cost allocation. Optional field that enables project-specific invoicing and reporting.\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"time_entry_ids\": {\n \"description\": \"Array of time entry IDs to be billed on this line item. This allows you to bill specific time entries against this line item, enabling detailed time-based invoicing and project cost tracking.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": []\n },\n \"product_type\": {\n \"description\": \"Type of product or service for this line item. Allowed values: goods or services. For South Africa Edition, additional values include capital_service and capital_goods. This classification affects tax calculations, reporting, and compliance requirements based on your organization's location and tax regulations.\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"E48\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location associated with the invoice. Use the `location_id` returned by the Locations API for the same organization. This links the invoice to a specific business location, which may affect tax calculations, reporting, and business operations. Required if your organization has multiple locations configured.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"expense_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion.\",\n \"example\": \"460000000028080\"\n },\n \"expense_receipt_name\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item as it appears on the invoice. Maximum length is 100 characters. Can be customized to override the default item name from the item catalog.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item providing additional information about the product or service. This description appears on the invoice document and helps customers understand what they are being charged for. Maximum length is 2000 characters.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"item_order\": {\n \"description\": \"Sequential order number for this line item on the invoice. Determines the display order of line items on the invoice document. Lower numbers appear first. Used for organizing line items in a specific sequence.\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"bcy_rate\": {\n \"description\": \"Base currency rate for the line item. This is the rate in the organization's base currency before any currency conversion. Used for multi-currency scenarios where the invoice currency differs from the base currency.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 120\n },\n \"rate\": {\n \"description\": \"Unit rate or price for the line item in the invoice currency. This is the amount charged per unit of the item. The rate is used to calculate the line item total (rate \\u00d7 quantity) and affects the final invoice amount.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"quantity\": {\n \"description\": \"Number of units of the item being invoiced. This value is multiplied by the rate to calculate the line item total. Must be a positive number greater than zero.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the line item quantity. Examples include \\\"Nos\\\" (Numbers), \\\"kgs\\\" (Kilograms), \\\"hrs\\\" (Hours), \\\"pcs\\\" (Pieces), etc. This helps clarify what the quantity represents. Maximum length is 100 characters.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"discount_amount\": {\n \"description\": \"Fixed discount amount applied to this specific line item. This is a monetary value that reduces the line item total. The discount is applied after the rate \\u00d7 quantity calculation but before tax calculation. Can be used for line-item specific discounts or promotions.\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"tags\": {\n \"description\": \"Array of reporting tags associated with this line item. Each tag consists of a `tag_id` and `tag_option_id` that categorize the line item for reporting and analytics purposes. Tags help organize and filter data across reports and enable detailed business intelligence analysis.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 982000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 982000000002670\n }\n }\n }\n },\n \"discount\": {\n \"description\": \"Discount amount applied to the invoice. Can be specified as a percentage (e.g., 12.5 for 12.5%) \\u2014 up to a maximum of 100% \\u2014 or as a fixed amount (e.g., 190 for $190). The discount is applied based on the `is_discount_before_tax` setting and `discount_type` (entity_level or item_level).\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax.\",\n \"type\": \"string\",\n \"example\": \"982000000557012\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_name\": {\n \"description\": \"The name of the tax\",\n \"type\": \"string\",\n \"example\": \"VAT\"\n },\n \"tax_type\": {\n \"description\": \"The type of the tax\",\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_percentage\": {\n \"description\": \"The percentage of tax levied\",\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 12.5\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"header_name\": {\n \"description\": \"Name of the item header or category that groups related line items together. This is used for organizational purposes to categorize and group similar items on the invoice. For example, \\\"Electronic devices\\\", \\\"Office supplies\\\", or \\\"Professional services\\\". This helps in organizing and presenting line items in a structured manner on the invoice document.\",\n \"type\": \"string\",\n \"example\": \"Electronic devices\"\n },\n \"header_id\": {\n \"description\": \"ID of the item header\",\n \"type\": \"string\",\n \"example\": 982000000000670\n }\n }\n }\n },\n \"payment_options\": {\n \"description\": \"Payment options for the invoice, online payment gateways and bank accounts. Will be displayed in the pdf.\",\n \"type\": \"object\",\n \"properties\": {\n \"payment_gateways\": {\n \"description\": \"Online payment gateways through which payment can be made.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"configured\": {\n \"description\": \"Boolean check to see if a payment gateway has been configured\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"additional_field1\": {\n \"description\": \"Paypal payment method. Allowed Values: standard and adaptive\",\n \"type\": \"string\",\n \"example\": \"standard\"\n },\n \"gateway_name\": {\n \"description\": \"Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree\",\n \"type\": \"string\",\n \"example\": \"paypal\"\n }\n }\n }\n }\n }\n },\n \"allow_partial_payments\": {\n \"description\": \"Boolean flag that determines whether customers can make partial payments against this invoice. When true, customers can pay less than the full invoice amount, and the invoice will remain open with a remaining balance. When false, customers must pay the full amount to complete the invoice. This setting affects payment processing and invoice status tracking.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"custom_body\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_subject\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"notes\": {\n \"description\": \"Additional information or comments to be displayed on the invoice document. This field is typically used for thank you messages, special instructions, or any other information you want to communicate to the customer. The notes appear on the invoice PDF and are visible to customers\",\n \"type\": \"string\",\n \"example\": \"Looking forward for your business.\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions text to be displayed on the invoice document. This field is used to specify payment terms, delivery conditions, return policies, or any other legal or business terms that apply to this transaction. The terms appear on the invoice PDF and are legally binding.\",\n \"type\": \"string\",\n \"example\": \"Terms & Conditions apply\"\n },\n \"shipping_charge\": {\n \"description\": \"Additional shipping or delivery charges applied to the invoice. Must be specified as a fixed amount (e.g., \\\"25.00\\\"). This amount is added to the invoice total and is subject to tax calculation.\",\n \"type\": \"string\",\n \"example\": 0\n },\n \"adjustment\": {\n \"description\": \"Additional charge or credit amount applied to the invoice total. This can be used for rounding adjustments, handling fees, or any other one-time charges/credits. Positive values add to the total, negative values reduce the total. This amount is applied after tax calculation and affects the final invoice total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"adjustment_description\": {\n \"description\": \"Text description explaining the reason for the adjustment amount. This description appears on the invoice document to explain why the adjustment was applied. Common examples include \\\"Rounding adjustment\\\", \\\"Handling fee\\\", \\\"Early payment discount\\\", or \\\"Late payment fee\\\". This helps customers understand the purpose of the adjustment.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"reason\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": 11149000000061052,\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": 11149000000061054,\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax to be applied to this line item. Use the `tax_id` returned by the Taxes API for the same organization. This determines which tax rate and rules are applied to the line item, affecting the final tax calculation and compliance reporting.\",\n \"type\": \"string\",\n \"example\": 982000000557028\n },\n \"expense_id\": {\n \"type\": \"string\",\n \"description\": \"Unique identifier of the billable expense to be converted to an invoice line item. This converts a previously recorded expense into a billable line item on the invoice, enabling expense-to-invoice conversion.\",\n \"example\": \"460000000028080\"\n },\n \"salesorder_item_id\": {\n \"description\": \"Unique identifier of the sales order line item that is being converted to this invoice line item. Use this field when creating an invoice from an existing sales order. The `salesorder_item_id` links this invoice line item back to its source sales order line item, enabling tracking of the conversion process and maintaining the relationship between sales orders and invoices.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Refer the [link][2] for more deails. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"line_item_id\": {\n \"description\": \"The line item id\",\n \"type\": \"string\",\n \"example\": 982000000567021\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceComment.json new file mode 100644 index 00000000..d7ecc26b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceComment.json @@ -0,0 +1,254 @@ +{ + "name": "UpdateInvoiceComment", + "fully_qualified_name": "ZohoBooksApi.UpdateInvoiceComment@0.1.0", + "description": "Update an existing comment on an invoice.\n\nUse this tool to update a specific comment on an invoice by providing the invoice and comment IDs.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "ID of the organization for which the invoice comment needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_unique_id", + "required": true, + "description": "Unique identifier for the invoice to update its comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "comment_id", + "required": true, + "description": "Unique identifier of the comment to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + }, + { + "name": "updated_comment_details", + "required": false, + "description": "JSON object containing the updated comment description and visibility flag for clients.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to check if the comment to be shown to the clients" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_invoice_comment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/comments/{comment_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_unique_id", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_id", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "updated_comment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to check if the comment to be shown to the clients" + } + }, + "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 \"description\": {\n \"description\": \"The description of the comment.\",\n \"type\": \"string\",\n \"example\": \"This is a comment.\"\n },\n \"show_comment_to_clients\": {\n \"description\": \"Boolean to check if the comment to be shown to the clients\",\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceCustomFields.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceCustomFields.json new file mode 100644 index 00000000..0d4b6ddb --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceCustomFields.json @@ -0,0 +1,221 @@ +{ + "name": "UpdateInvoiceCustomFields", + "fully_qualified_name": "ZohoBooksApi.UpdateInvoiceCustomFields@0.1.0", + "description": "Update custom fields in an existing invoice.\n\nUse this tool to modify the value of custom fields in a specified invoice. It should be called when you need to change or update custom information for invoice records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to which the invoice belongs. This is required to identify the correct organization context for the invoice update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier of the invoice to update custom fields.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "custom_fields_update_list", + "required": false, + "description": "A list of JSON objects representing custom field updates, each with a 'customfield_id' and 'value'.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_custom_fields_in_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoice/{invoice_id}/customfields", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_fields_update_list", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "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 \"description\": \"Custom fields for an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceShippingAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceShippingAddress.json new file mode 100644 index 00000000..6ae292c8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceShippingAddress.json @@ -0,0 +1,301 @@ +{ + "name": "UpdateInvoiceShippingAddress", + "fully_qualified_name": "ZohoBooksApi.UpdateInvoiceShippingAddress@0.1.0", + "description": "Update the shipping address of a specific invoice.\n\nUse this tool to update the shipping address associated with a specific invoice in Zoho Books. It is used when there's a need to modify the shipping information for an invoice after it has been created.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. Required to specify which organization's invoice will be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_unique_identifier", + "required": true, + "description": "Unique identifier of the invoice to update the shipping address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "invoice_shipping_address_payload", + "required": false, + "description": "JSON payload containing the new shipping address details including address, street2, city, state, zip, country, and fax for the invoice.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipping address for the invoice" + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s Shipping address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s Shipping address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s Shipping address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s Shipping address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_invoice_shipping_address'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/address/shipping", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_unique_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_shipping_address_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipping address for the invoice" + }, + "street2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the customer\u2019s Shipping address." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the customer\u2019s Shipping address." + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Zip code of the customer\u2019s Shipping address." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the customer\u2019s Shipping address." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer's fax number." + } + }, + "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 \"address\": {\n \"description\": \"Shipping address for the invoice\",\n \"type\": \"string\",\n \"example\": \"4900 Hopyard Rd, Suit 310\"\n },\n \"street2\": {\n \"type\": \"string\",\n \"example\": \"McMillan Avenue\"\n },\n \"city\": {\n \"description\": \"City of the customer\\u2019s Shipping address.\",\n \"type\": \"string\",\n \"example\": \"Pleasanton\"\n },\n \"state\": {\n \"description\": \"State of the customer\\u2019s Shipping address.\",\n \"type\": \"string\",\n \"example\": \"CA\"\n },\n \"zip\": {\n \"description\": \"Zip code of the customer\\u2019s Shipping address.\",\n \"type\": \"string\",\n \"example\": 945881\n },\n \"country\": {\n \"description\": \"Country of the customer\\u2019s Shipping address.\",\n \"type\": \"string\",\n \"example\": \"USA\"\n },\n \"fax\": {\n \"description\": \"Customer's fax number.\",\n \"type\": \"string\",\n \"example\": \"+1-925-924-9600\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceTemplate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceTemplate.json new file mode 100644 index 00000000..d49cbdd8 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateInvoiceTemplate.json @@ -0,0 +1,187 @@ +{ + "name": "UpdateInvoiceTemplate", + "fully_qualified_name": "ZohoBooksApi.UpdateInvoiceTemplate@0.1.0", + "description": "Update the PDF template for a specific invoice.\n\nUse this tool to update the PDF template associated with a particular invoice. This is useful when you need to change the template style or format of an invoice after it has been issued.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the ID of the organization for which the invoice template is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "Unique identifier for the invoice to update the PDF template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + }, + { + "name": "invoice_template_id", + "required": true, + "description": "Unique identifier for the invoice template to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_invoice_template'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/templates/{template_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "template_id", + "tool_parameter_name": "invoice_template_id", + "description": "Unique identifier of the invoice template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice template." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/UpdateItemCustomFields.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateItemCustomFields.json new file mode 100644 index 00000000..84e5b9ae --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateItemCustomFields.json @@ -0,0 +1,221 @@ +{ + "name": "UpdateItemCustomFields", + "fully_qualified_name": "ZohoBooksApi.UpdateItemCustomFields@0.1.0", + "description": "Updates custom fields in an existing item.\n\nUse this tool to update the value of custom fields in existing items. Call it when you need to modify specific custom field information for an item record in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization associated with the item. This is required to specify which organization's item custom fields should be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "item_identifier", + "required": true, + "description": "Provide the unique identifier for the item to update its custom fields.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "custom_fields_update", + "required": false, + "description": "An array of JSON objects, each with 'customfield_id' (integer) and 'value' (string) to update custom fields.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_custom_fields_in_item'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/item/{item_id}/customfields", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "item_identifier", + "description": "Unique identifier of the item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_fields_update", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "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 \"description\": \"Custom fields for an item.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateItemViaCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateItemViaCustomField.json new file mode 100644 index 00000000..2b4253c0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateItemViaCustomField.json @@ -0,0 +1,821 @@ +{ + "name": "UpdateItemViaCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateItemViaCustomField@0.1.0", + "description": "Update or create an item using a unique custom field.\n\nUse this tool to update an existing item or create a new one based on a unique custom field value in Zoho Books. If the custom field value matches, the item is updated; otherwise, a new item is created if allowed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This ID is used to specify which organization's data you are trying to access or modify.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_api_name", + "required": true, + "description": "The API name of the unique custom field used for identifying the item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "The unique value of the custom field used to identify or create an item in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "item_details", + "required": false, + "description": "JSON object containing details of the item to be updated or created. Includes fields like name, rate, description, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item. Max-length [100]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Price of the item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the item. Max-length [2000]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "purchase_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the purchase tax rule" + }, + "sales_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the sales tax rule" + }, + "tax_percentage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percent of the tax." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "sku": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SKU value of item,should be unique throughout the product" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the type of an item. Allowed values:
goods or service or digital_service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track the taxability of the item." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption. Mandatory, if is_taxable is false." + }, + "purchase_tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the purchase tax exemption. Mandatory, if is_taxable is false." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the item has to be associated with." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Max-length [25]" + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the item. Allowed values: sales,purchases,sales_and_purchases and inventory. Default value will be sales." + }, + "purchase_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase description for the item." + }, + "purchase_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase price of the item." + }, + "purchase_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the COGS account to which the item has to be associated with. Mandatory, if item_type is purchase / sales and purchase / inventory." + }, + "inventory_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the stock account to which the item has to be associated with. Mandatory, if item_type is inventory." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Preferred vendor ID." + }, + "reorder_level": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reorder level of the item." + }, + "locations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "initial_stock": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opening stock of the item." + }, + "initial_stock_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price of the opening stock." + } + }, + "description": null + }, + "item_tax_preferences": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "tax_specification": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set whether the tax type is intra/interstate" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an item." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_item_if_not_found", + "required": false, + "description": "Set to true to create a new item if no item matches the unique custom field value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_item_using_custom_field'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/items", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_item_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "item_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item. Max-length [100]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Price of the item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the item. Max-length [2000]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "purchase_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the purchase tax rule" + }, + "sales_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the sales tax rule" + }, + "tax_percentage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percent of the tax." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "sku": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SKU value of item,should be unique throughout the product" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the type of an item. Allowed values:
goods or service or digital_service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track the taxability of the item." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption. Mandatory, if is_taxable is false." + }, + "purchase_tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the purchase tax exemption. Mandatory, if is_taxable is false." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the item has to be associated with." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Max-length [25]" + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the item. Allowed values: sales,purchases,sales_and_purchases and inventory. Default value will be sales." + }, + "purchase_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase description for the item." + }, + "purchase_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase price of the item." + }, + "purchase_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the COGS account to which the item has to be associated with. Mandatory, if item_type is purchase / sales and purchase / inventory." + }, + "inventory_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the stock account to which the item has to be associated with. Mandatory, if item_type is inventory." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Preferred vendor ID." + }, + "reorder_level": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reorder level of the item." + }, + "locations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "initial_stock": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opening stock of the item." + }, + "initial_stock_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price of the opening stock." + } + }, + "description": null + }, + "item_tax_preferences": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "tax_specification": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set whether the tax type is intra/interstate" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an item." + } + }, + "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 \"required\": [\n \"name\",\n \"rate\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the item. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"rate\": {\n \"description\": \"Price of the item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"description\": {\n \"description\": \"Description for the item. Max-length [2000]\",\n \"type\": \"string\",\n \"example\": \"500GB\"\n },\n \"tax_id\": {\n \"description\": \"ID of the tax to be associated to the item.\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"in\"\n ]\n },\n \"purchase_tax_rule_id\": {\n \"description\": \"Id of the purchase tax rule\",\n \"type\": \"string\",\n \"example\": 127919000000106780,\n \"x-node_available_in\": [\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sales_tax_rule_id\": {\n \"description\": \"Id of the sales tax rule\",\n \"type\": \"string\",\n \"example\": 127919000000106780,\n \"x-node_available_in\": [\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_percentage\": {\n \"description\": \"Percent of the tax.\",\n \"type\": \"string\",\n \"example\": \"70%\"\n },\n \"hsn_or_sac\": {\n \"description\": \"HSN Code\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sku\": {\n \"description\": \"SKU value of item,should be unique throughout the product\",\n \"type\": \"string\",\n \"example\": \"s12345\"\n },\n \"product_type\": {\n \"description\": \"Specify the type of an item. Allowed values:
goods or service or digital_service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"is_taxable\": {\n \"description\": \"Boolean to track the taxability of the item.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption. Mandatory, if is_taxable is false.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"purchase_tax_exemption_id\": {\n \"description\": \"ID of the purchase tax exemption. Mandatory, if is_taxable is false.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"account_id\": {\n \"description\": \"ID of the account to which the item has to be associated with.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Max-length [25]\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_type\": {\n \"description\": \"Type of the item. Allowed values: sales,purchases,sales_and_purchases and inventory. Default value will be sales.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"purchase_description\": {\n \"description\": \"Purchase description for the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"purchase_rate\": {\n \"description\": \"Purchase price of the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"purchase_account_id\": {\n \"description\": \"ID of the COGS account to which the item has to be associated with. Mandatory, if item_type is purchase / sales and purchase / inventory.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"inventory_account_id\": {\n \"description\": \"ID of the stock account to which the item has to be associated with. Mandatory, if item_type is inventory.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"vendor_id\": {\n \"description\": \"Preferred vendor ID.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"reorder_level\": {\n \"description\": \"Reorder level of the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"locations\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"initial_stock\": {\n \"description\": \"Opening stock of the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"initial_stock_rate\": {\n \"description\": \"Unit price of the opening stock.\",\n \"type\": \"string\",\n \"example\": \" \"\n }\n }\n }\n },\n \"item_tax_preferences\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_id\": {\n \"description\": \"ID of the tax to be associated to the item.\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_specification\": {\n \"description\": \"Set whether the tax type is intra/interstate\",\n \"type\": \"string\",\n \"example\": \"intra\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n },\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an item.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateJournalInZohoBooks.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateJournalInZohoBooks.json new file mode 100644 index 00000000..04f08226 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateJournalInZohoBooks.json @@ -0,0 +1,771 @@ +{ + "name": "UpdateJournalInZohoBooks", + "fully_qualified_name": "ZohoBooksApi.UpdateJournalInZohoBooks@0.1.0", + "description": "Updates a journal entry in Zoho Books with specified details.\n\nThis tool updates an existing journal entry in Zoho Books using the provided details. It should be called when a user needs to modify a journal entry in their Zoho Books account.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required for identifying which organization's journal entry to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "journal_identifier", + "required": true, + "description": "The unique identifier for the journal entry to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "journal_id" + }, + { + "name": "journal_update_details", + "required": false, + "description": "JSON object containing all update details for the journal, including dates, reference numbers, notes, VAT information, line items, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "journal_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the journal to be recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the journal." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the journal." + }, + "journal_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Journal. Allowed values: Cash and Both ." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the journals. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "include_in_vat_return": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Journal should be included in VAT Return" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the journal. This denotes whether the journal is to be treated as goods or service. Allowed Values: digital_service, goods and service." + }, + "is_bas_adjustment": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Journal is created for BAS Adjustment" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency Associated with the Journal" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange Rate between the Currencies" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account for which journals to be recorded." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer/Vendor" + }, + "line_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description that can be given at the line item level." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Tax Exemption. Allowed Values : customer and item" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount to be recorded for the journal." + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the accounts needs to be debited or credited. Allowed Values: debit and credit." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods journal and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service journal and reverse charge VAT needs to be reported." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag Option" + } + }, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + } + }, + "description": null + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Tax Exemption. Allowed Values : customer and item" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_journal'.", + "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": [ + "ZohoBooks.accountants.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/journals/{journal_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "journal_id", + "tool_parameter_name": "journal_identifier", + "description": "Unique identifier of the journal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the journal." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "journal_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "journal_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the journal to be recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the journal." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the journal." + }, + "journal_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Journal. Allowed values: Cash and Both ." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the journals. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "include_in_vat_return": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Journal should be included in VAT Return" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the journal. This denotes whether the journal is to be treated as goods or service. Allowed Values: digital_service, goods and service." + }, + "is_bas_adjustment": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Journal is created for BAS Adjustment" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency Associated with the Journal" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange Rate between the Currencies" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account for which journals to be recorded." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer/Vendor" + }, + "line_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description that can be given at the line item level." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Authority" + }, + "tax_exemption_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Tax Exemption. Allowed Values : customer and item" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount to be recorded for the journal." + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the accounts needs to be debited or credited. Allowed Values: debit and credit." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods journal and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service journal and reverse charge VAT needs to be reported." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag Option" + } + }, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + } + }, + "description": null + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the Tax Exemption. Allowed Values : customer and item" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "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 \"required\": [\n \"journal_date\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"journal_date\": {\n \"description\": \"Date on which the journal to be recorded.\",\n \"type\": \"string\",\n \"example\": \"2013-09-04\"\n },\n \"reference_number\": {\n \"description\": \"Reference number for the journal.\",\n \"type\": \"string\",\n \"example\": \"7355\"\n },\n \"notes\": {\n \"description\": \"Notes for the journal.\",\n \"type\": \"string\",\n \"example\": \"Loan repayment\"\n },\n \"journal_type\": {\n \"description\": \"Type of the Journal. Allowed values: Cash and Both .\",\n \"type\": \"string\",\n \"example\": \"both\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the journals. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"include_in_vat_return\": {\n \"description\": \"Check if Journal should be included in VAT Return\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"eu\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of the journal. This denotes whether the journal is to be treated as goods or service. Allowed Values: digital_service, goods and service.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_bas_adjustment\": {\n \"description\": \"Check if Journal is created for BAS Adjustment\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"currency_id\": {\n \"description\": \"ID of the Currency Associated with the Journal\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange Rate between the Currencies\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"amount\",\n \"debit_or_credit\"\n ],\n \"properties\": {\n \"account_id\": {\n \"description\": \"ID of account for which journals to be recorded.\",\n \"type\": \"string\",\n \"example\": \"460000000000361\"\n },\n \"customer_id\": {\n \"description\": \"ID of the Customer/Vendor\",\n \"type\": \"string\"\n },\n \"line_id\": {\n \"description\": \"ID of the Line\",\n \"type\": \"string\",\n \"example\": \"460000000038005\"\n },\n \"description\": {\n \"description\": \"Description that can be given at the line item level.\",\n \"type\": \"string\"\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the Tax Authority\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_type\": {\n \"description\": \"Type of the Tax Exemption. Allowed Values : customer and item\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Name of the Tax Authority\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"description\": \"ID of the tax.\",\n \"type\": \"string\"\n },\n \"amount\": {\n \"description\": \"Amount to be recorded for the journal.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 5000\n },\n \"debit_or_credit\": {\n \"description\": \"Whether the accounts needs to be debited or credited. Allowed Values: debit and credit.\",\n \"type\": \"string\",\n \"example\": \"credit\"\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods journal and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service journal and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000094001\"\n },\n \"tag_option_id\": {\n \"description\": \"ID of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000048001\"\n }\n }\n }\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"project_id\": {\n \"description\": \"ID of the Project\",\n \"type\": \"string\",\n \"example\": \"460000000898001\"\n }\n }\n }\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_type\": {\n \"description\": \"Type of the Tax Exemption. Allowed Values : customer and item\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"460000000098001\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateLocationInZohoBooks.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateLocationInZohoBooks.json new file mode 100644 index 00000000..2964a022 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateLocationInZohoBooks.json @@ -0,0 +1,479 @@ +{ + "name": "UpdateLocationInZohoBooks", + "fully_qualified_name": "ZohoBooksApi.UpdateLocationInZohoBooks@0.1.0", + "description": "Update location details in Zoho Books.\n\nUse this tool to update location details in Zoho Books by specifying the location ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books. It is required to identify which organization's location is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "location_identifier", + "required": true, + "description": "Unique identifier of the location to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "inferrable": true, + "http_endpoint_parameter_name": "location_id" + }, + { + "name": "location_update_details", + "required": false, + "description": "A JSON object containing details like type, email, phone, address, and other location specifics to update in Zoho Books.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the location" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email id for the location" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number for location" + }, + "address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City Name of the location." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State Name of the location." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country Name of the location." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention of the location." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code of the location." + }, + "street_address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street Name of the location." + }, + "street_address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street Name of the location." + } + }, + "inner_properties": null, + "description": null + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location" + }, + "tax_settings_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Settings ID" + }, + "parent_location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Parent Location ID" + }, + "associated_series_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "auto_number_generation_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Autonumber generation group ID" + }, + "is_all_users_selected": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether all users are selected or not" + }, + "user_ids": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated user ids." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_location'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/locations/{location_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "location_id", + "tool_parameter_name": "location_identifier", + "description": "Unique identifier of the location.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the location." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "location_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the location" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email id for the location" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mobile number for location" + }, + "address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City Name of the location." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State Name of the location." + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country Name of the location." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attention of the location." + }, + "state_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State code of the location." + }, + "street_address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street Name of the location." + }, + "street_address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street Name of the location." + } + }, + "inner_properties": null, + "description": null + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location" + }, + "tax_settings_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Settings ID" + }, + "parent_location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Parent Location ID" + }, + "associated_series_ids": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "auto_number_generation_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Autonumber generation group ID" + }, + "is_all_users_selected": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether all users are selected or not" + }, + "user_ids": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated user ids." + } + }, + "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 \"required\": [\n \"location_name\",\n \"country\",\n \"tax_settings_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"description\": \"Type of the location\",\n \"type\": \"string\",\n \"example\": \"general / line_item_only\"\n },\n \"email\": {\n \"description\": \"Email id for the location\",\n \"type\": \"string\",\n \"example\": \"willsmith@bowmanfurniture.com\"\n },\n \"phone\": {\n \"description\": \"Mobile number for location\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n },\n \"address\": {\n \"type\": \"object\",\n \"properties\": {\n \"city\": {\n \"description\": \"City Name of the location.\",\n \"type\": \"string\",\n \"example\": \"New York City\"\n },\n \"state\": {\n \"description\": \"State Name of the location.\",\n \"type\": \"string\",\n \"example\": \"New York\"\n },\n \"country\": {\n \"description\": \"Country Name of the location.\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"attention\": {\n \"description\": \"Attention of the location.\",\n \"type\": \"string\"\n },\n \"state_code\": {\n \"description\": \"State code of the location.\",\n \"type\": \"string\",\n \"example\": \"NY\"\n },\n \"street_address1\": {\n \"description\": \"Street Name of the location.\",\n \"type\": \"string\",\n \"example\": \"No:234,90 Church Street\"\n },\n \"street_address2\": {\n \"description\": \"Street Name of the location.\",\n \"type\": \"string\",\n \"example\": \"McMillan Avenue\"\n }\n }\n },\n \"location_name\": {\n \"description\": \"Name of the location\",\n \"type\": \"string\",\n \"example\": \"Head Office\"\n },\n \"tax_settings_id\": {\n \"description\": \"Tax Settings ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"parent_location_id\": {\n \"description\": \"Parent Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000041010\"\n },\n \"associated_series_ids\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"982000000870911\",\n \"982000000870915\"\n ]\n },\n \"auto_number_generation_id\": {\n \"description\": \"Autonumber generation group ID\",\n \"type\": \"string\",\n \"example\": \"982000000870911\"\n },\n \"is_all_users_selected\": {\n \"description\": \"Whether all users are selected or not\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"user_ids\": {\n \"description\": \"Comma separated user ids.\",\n \"type\": \"string\",\n \"example\": \"460000000036868,460000000036869\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateOpeningBalance.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateOpeningBalance.json new file mode 100644 index 00000000..78df4ad9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateOpeningBalance.json @@ -0,0 +1,382 @@ +{ + "name": "UpdateOpeningBalance", + "fully_qualified_name": "ZohoBooksApi.UpdateOpeningBalance@0.1.0", + "description": "Update the existing opening balance information.\n\nThis tool is used to update the existing opening balance information in Zoho Books. It should be called when there is a need to modify or correct the initial financial figures recorded in the system.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required for updating the opening balance information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "opening_balance_request", + "required": false, + "description": "JSON object containing details to update the opening balance, including date, accounts, and their respective balances.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the opening balance needs to be recorded. [yyyy-MM-dd]" + }, + "accounts": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "acount_split_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of split account that you want to update." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account for which you need to record opening balance." + }, + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit or Credit for which the amount needs to be recorded. Allowed Values: debit and credit." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the foreign currencies if involved." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account currency." + }, + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "bcy_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount in Base Currency of the Organisation" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location." + } + }, + "description": null + }, + "opening_balance_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of opening balance." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_opening_balance'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/openingbalances", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "opening_balance_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the opening balance needs to be recorded. [yyyy-MM-dd]" + }, + "accounts": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "acount_split_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of split account that you want to update." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account for which you need to record opening balance." + }, + "account_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "debit_or_credit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Debit or Credit for which the amount needs to be recorded. Allowed Values: debit and credit." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the foreign currencies if involved." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of account currency." + }, + "currency_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "bcy_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount in Base Currency of the Organisation" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "location_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the location." + } + }, + "description": null + }, + "opening_balance_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of opening balance." + } + }, + "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 \"required\": [\n \"opening_balance_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"description\": \"Date on which the opening balance needs to be recorded. [yyyy-MM-dd]\",\n \"type\": \"string\",\n \"example\": \"2013-10-01\"\n },\n \"accounts\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"acount_split_id\": {\n \"description\": \"ID of split account that you want to update.\",\n \"type\": \"string\",\n \"example\": \"460000000050045\"\n },\n \"account_id\": {\n \"description\": \"ID of account for which you need to record opening balance.\",\n \"type\": \"string\",\n \"example\": \"460000000000358\"\n },\n \"account_name\": {\n \"type\": \"string\",\n \"example\": \"Undeposited Funds\"\n },\n \"debit_or_credit\": {\n \"description\": \"Debit or Credit for which the amount needs to be recorded. Allowed Values: debit and credit.\",\n \"type\": \"string\",\n \"example\": \"debit\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for the foreign currencies if involved.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"currency_id\": {\n \"description\": \"ID of account currency.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"currency_code\": {\n \"type\": \"string\",\n \"example\": \"USD\"\n },\n \"bcy_amount\": {\n \"description\": \"Amount in Base Currency of the Organisation\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"amount\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2000\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"location_name\": {\n \"description\": \"Name of the location.\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"opening_balance_id\": {\n \"description\": \"ID of opening balance.\",\n \"type\": \"string\",\n \"example\": \"460000000050041\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateOrganizationDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateOrganizationDetails.json new file mode 100644 index 00000000..00cacc4d --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateOrganizationDetails.json @@ -0,0 +1,673 @@ +{ + "name": "UpdateOrganizationDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateOrganizationDetails@0.1.0", + "description": "Update an organization's details in Zoho Books.\n\nThis tool updates the details of an organization in Zoho Books. It should be called when you need to modify existing information about a specific organization.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier of the organization to update in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization." + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "organization_identifier", + "required": true, + "description": "The unique string identifier for the organization to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization." + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "organization_details", + "required": false, + "description": "JSON object containing updated information for an organization, such as name, fiscal year start month, timezone, language, addresses, contact info, currency, company ID, tax ID, and any custom fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project." + }, + "fiscal_year_start_month": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fiscal or financial starting year of your business. Allowed Values: january, february, march, april, may, june, july, august, september, october, november and december" + }, + "is_logo_uploaded": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To determine whether logo is uploaded." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time zone in with the organization is located geographically." + }, + "date_format": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Format for representing the date." + }, + "field_separator": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field separator for components in date." + }, + "language_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "language code for organization.For instance en represents english." + }, + "org_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address of the organisation" + }, + "remit_to_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipping address of the organisation" + }, + "address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "street_address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street name of the Billing address of the Organisation" + }, + "street_address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continyed billing address of the organisation" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the organisation" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State where the organisation is located" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the Organisation" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP/Postal code of the organisation's location" + } + }, + "inner_properties": null, + "description": "Billing address of the organisation" + }, + "contact_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the contact person of the organisation" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact number of the organisation" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "FAX number of the organisation" + }, + "website": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organisation's website" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "email ID of the contact person of the organisation" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organisation curreency" + }, + "companyid_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label \" Company ID \"" + }, + "companyid_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "value in field \"company ID\"" + }, + "taxid_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label \"tax ID\"" + }, + "taxid_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value in \"tax ID\"" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index used to list" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the list" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of each column" + } + }, + "description": "Additional fields to describe an organisation" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_organization'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/organizations/{organization_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "Unique identifier of the organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "organization_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project." + }, + "fiscal_year_start_month": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fiscal or financial starting year of your business. Allowed Values: january, february, march, april, may, june, july, august, september, october, november and december" + }, + "is_logo_uploaded": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To determine whether logo is uploaded." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time zone in with the organization is located geographically." + }, + "date_format": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Format for representing the date." + }, + "field_separator": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field separator for components in date." + }, + "language_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "language code for organization.For instance en represents english." + }, + "org_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Billing address of the organisation" + }, + "remit_to_address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipping address of the organisation" + }, + "address": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "street_address1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Street name of the Billing address of the Organisation" + }, + "street_address2": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Continyed billing address of the organisation" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the organisation" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State where the organisation is located" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the Organisation" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP/Postal code of the organisation's location" + } + }, + "inner_properties": null, + "description": "Billing address of the organisation" + }, + "contact_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the contact person of the organisation" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contact number of the organisation" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "FAX number of the organisation" + }, + "website": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Organisation's website" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "email ID of the contact person of the organisation" + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organisation curreency" + }, + "companyid_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label \" Company ID \"" + }, + "companyid_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "value in field \"company ID\"" + }, + "taxid_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label \"tax ID\"" + }, + "taxid_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value in \"tax ID\"" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index used to list" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the list" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of each column" + } + }, + "description": "Additional fields to describe an organisation" + } + }, + "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 \"name\": {\n \"description\": \"Name of the project.\",\n \"type\": \"string\",\n \"example\": \"Zillium Inc\"\n },\n \"fiscal_year_start_month\": {\n \"description\": \"Fiscal or financial starting year of your business. Allowed Values: january, february, march, april, may, june, july, august, september, october, november and december\",\n \"type\": \"string\",\n \"example\": \"january\"\n },\n \"is_logo_uploaded\": {\n \"description\": \"To determine whether logo is uploaded.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"time_zone\": {\n \"description\": \"Time zone in with the organization is located geographically.\",\n \"type\": \"string\",\n \"example\": \"PST\"\n },\n \"date_format\": {\n \"description\": \"Format for representing the date.\",\n \"type\": \"string\",\n \"example\": \"dd MMM yyyy\"\n },\n \"field_separator\": {\n \"description\": \"Field separator for components in date.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"language_code\": {\n \"description\": \"language code for organization.For instance en represents english.\",\n \"type\": \"string\",\n \"example\": \"en\"\n },\n \"org_address\": {\n \"description\": \"Billing address of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"remit_to_address\": {\n \"description\": \"Shipping address of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"address\": {\n \"description\": \"Billing address of the organisation\",\n \"type\": \"object\",\n \"properties\": {\n \"street_address1\": {\n \"description\": \"Street name of the Billing address of the Organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"street_address2\": {\n \"description\": \"Continyed billing address of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"city\": {\n \"description\": \"City of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"state\": {\n \"description\": \"State where the organisation is located\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"country\": {\n \"description\": \"Country of the Organisation\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n },\n \"zip\": {\n \"description\": \"ZIP/Postal code of the organisation's location\",\n \"type\": \"string\",\n \"example\": \"U.S.A\"\n }\n }\n },\n \"contact_name\": {\n \"description\": \"Name of the contact person of the organisation\",\n \"type\": \"string\",\n \"example\": \"John Smith\"\n },\n \"phone\": {\n \"description\": \"Contact number of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"fax\": {\n \"description\": \"FAX number of the organisation\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"website\": {\n \"description\": \"Organisation's website\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"email\": {\n \"description\": \"email ID of the contact person of the organisation\",\n \"type\": \"string\",\n \"example\": \"johndavid@zilliuminc.com\"\n },\n \"currency_id\": {\n \"description\": \"ID of the organisation curreency\",\n \"type\": \"string\",\n \"example\": \"982000000000190\"\n },\n \"companyid_label\": {\n \"description\": \"Label \\\" Company ID \\\"\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"companyid_value\": {\n \"description\": \"value in field \\\"company ID\\\"\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"taxid_label\": {\n \"description\": \"Label \\\"tax ID\\\"\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"taxid_value\": {\n \"description\": \"Value in \\\"tax ID\\\"\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"custom_fields\": {\n \"description\": \"Additional fields to describe an organisation\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index used to list\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"value\": {\n \"description\": \"Value of the list\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"label\": {\n \"description\": \"Label of each column\",\n \"type\": \"string\",\n \"example\": \" \"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePaymentByCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePaymentByCustomField.json new file mode 100644 index 00000000..3cab1192 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePaymentByCustomField.json @@ -0,0 +1,595 @@ +{ + "name": "UpdatePaymentByCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdatePaymentByCustomField@0.1.0", + "description": "Update or upsert a customer payment using a unique custom field.\n\nUse this tool to update an existing customer payment or create a new one if it doesn't exist, by specifying a unique value from a custom field. The unique custom field value helps identify the payment to update. If upsert is enabled, a new payment will be created when the unique value is not found.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization whose payment is being updated or created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_api_name", + "required": true, + "description": "API name of the unique custom field used to identify the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "The unique value of the custom field used to identify or create a payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "payment_details", + "required": false, + "description": "JSON object containing payment details such as customer_id, payment_mode, amount, date, reference_number, description, invoices, exchange_rate, payment_form, bank_charges, custom_fields, invoice_id, amount_applied, tax_amount_withheld, location_id, account_id, and retainerinvoice_id.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer involved in the payment." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment is made. This can be check, cash, creditcard, banktransfer, bankremittance, autotransaction or others. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + }, + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + } + }, + "description": "List of invoices associated with the payment. Each invoice object contains invoice_id, invoice_number, date, invoice_amount, amount_applied and balance_amount." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Denotes any additional bank charges." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "description": "Additional fields for the payments." + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount withheld for tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/bank account the payment has to be deposited." + }, + "retainerinvoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the retainer invoice associated with the payment" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_new_payment_if_not_found", + "required": false, + "description": "Set to true to create a new payment when no matching unique custom field value is found.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_customer_payment_using_custom_field'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_new_payment_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "payment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer involved in the payment." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment is made. This can be check, cash, creditcard, banktransfer, bankremittance, autotransaction or others. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + }, + "invoices": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + } + }, + "description": "List of invoices associated with the payment. Each invoice object contains invoice_id, invoice_number, date, invoice_amount, amount_applied and balance_amount." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "bank_charges": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Denotes any additional bank charges." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + } + }, + "description": "Additional fields for the payments." + }, + "invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Invoice ID of the required invoice." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount withheld for tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/bank account the payment has to be deposited." + }, + "retainerinvoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the retainer invoice associated with the payment" + } + }, + "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 \"required\": [\n \"customer_id\",\n \"payment_mode\",\n \"amount\",\n \"invoices\",\n \"invoice_id\",\n \"amount_applied\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Customer ID of the customer involved in the payment.\",\n \"type\": \"string\",\n \"example\": \"903000000000099\"\n },\n \"payment_mode\": {\n \"description\": \"Mode through which payment is made. This can be check, cash, creditcard, banktransfer, bankremittance, autotransaction or others. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"amount\": {\n \"description\": \"Amount paid in the respective payment.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"date\": {\n \"description\": \"Date on which payment is made. Format [yyyy-mm-dd]\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"reference_number\": {\n \"description\": \"Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"description\": {\n \"description\": \"Description about the payment.\",\n \"type\": \"string\",\n \"example\": \"Payment has been added to INV-384\"\n },\n \"invoices\": {\n \"description\": \"List of invoices associated with the payment. Each invoice object contains invoice_id, invoice_number, date, invoice_amount, amount_applied and balance_amount.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"invoice_id\": {\n \"description\": \"Invoice ID of the required invoice.\",\n \"type\": \"string\",\n \"example\": \"90300000079426\"\n },\n \"amount_applied\": {\n \"description\": \"Amount paid for the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n }\n }\n }\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1,\n \"default\": 1\n },\n \"payment_form\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"cash\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"bank_charges\": {\n \"description\": \"Denotes any additional bank charges.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"custom_fields\": {\n \"description\": \"Additional fields for the payments.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\n \"description\": \"Label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"label\"\n },\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": 129890\n }\n }\n }\n },\n \"invoice_id\": {\n \"description\": \"Invoice ID of the required invoice.\",\n \"type\": \"string\",\n \"example\": \"90300000079426\"\n },\n \"amount_applied\": {\n \"description\": \"Amount paid for the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"tax_amount_withheld\": {\n \"description\": \"Amount withheld for tax.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"account_id\": {\n \"description\": \"ID of the cash/bank account the payment has to be deposited.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"retainerinvoice_id\": {\n \"description\": \"ID of the retainer invoice associated with the payment\",\n \"type\": \"string\",\n \"example\": \"982000000567114\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePaymentRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePaymentRefund.json new file mode 100644 index 00000000..46b759f4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePaymentRefund.json @@ -0,0 +1,350 @@ +{ + "name": "UpdatePaymentRefund", + "fully_qualified_name": "ZohoBooksApi.UpdatePaymentRefund@0.1.0", + "description": "Update details of a customer payment refund.\n\nThis tool updates the details of a refunded transaction for a customer payment in Zoho Books. It should be called when you need to modify existing refund details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. Required to access the organization's data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "customer_payment_identifier", + "required": true, + "description": "Unique identifier of the customer payment to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "customer_payment_id" + }, + { + "name": "refund_identifier", + "required": true, + "description": "Unique identifier for the refund transaction to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "refund_id" + }, + { + "name": "payment_refund_details", + "required": false, + "description": "A JSON object containing refund details: date (yyyy-mm-dd), refund_mode (max 50 chars), reference_number (max 100 chars), amount, exchange_rate, payment_form, description, and from_account_id.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The method of refund. Max-length [50]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account from which payment is refunded." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_customer_payment_refund'.", + "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": [ + "ZohoBooks.customerpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/customerpayments/{customer_payment_id}/refunds/{refund_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "customer_payment_id", + "tool_parameter_name": "customer_payment_identifier", + "description": "Unique identifier of the customer payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "refund_id", + "tool_parameter_name": "refund_identifier", + "description": "Unique identifier of the refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the refund." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "payment_refund_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which payment is made. Format [yyyy-mm-dd]" + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The method of refund. Max-length [50]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid in the respective payment." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description about the payment." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account from which payment is refunded." + } + }, + "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 \"required\": [\n \"date\",\n \"amount\",\n \"from_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"description\": \"Date on which payment is made. Format [yyyy-mm-dd]\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"refund_mode\": {\n \"description\": \"The method of refund. Max-length [50]\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"reference_number\": {\n \"description\": \"Reference number generated for the payment. A string of your choice can also be used as the reference number. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"amount\": {\n \"description\": \"Amount paid in the respective payment.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for the currency used in the invoices and customer's currency. The payment amount would be the multiplicative product of the original amount and the exchange rate.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1,\n \"default\": 1\n },\n \"payment_form\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"cash\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"description\": {\n \"description\": \"Description about the payment.\",\n \"type\": \"string\",\n \"example\": \"Payment has been added to INV-384\"\n },\n \"from_account_id\": {\n \"description\": \"The account from which payment is refunded.\",\n \"type\": \"string\",\n \"example\": \" \"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectDetails.json new file mode 100644 index 00000000..f7956796 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectDetails.json @@ -0,0 +1,657 @@ +{ + "name": "UpdateProjectDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateProjectDetails@0.1.0", + "description": "Update details of a project in Zoho Books.\n\nThis tool is called to update the details of a specific project within Zoho Books. It should be used when you need to modify project information such as its name, status, or any other attributes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization within Zoho Books, required to identify the organization whose project is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_unique_identifier", + "required": true, + "description": "Unique identifier of the project to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "project_details", + "required": false, + "description": "JSON object containing updated details of the project, such as name, customer ID, currency, and billing type. Includes tasks and user assignments.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + }, + "billing_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you bill your customer. Allowed Values: fixed_cost_for_project, based_on_project_hours, based_on_staff_hours and based_on_task_hours" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you budget. Allowed Values: total_project_cost, total_project_hours, hours_per_task and hours_per_staff" + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "budget_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Give value, if you are estimating total project revenue." + }, + "cost_budget_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budgeted Cost to complete this project" + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "tasks": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task description. Max-length [500]" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate of a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budgeting." + } + }, + "description": null + }, + "users": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "is_current_user": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email of the user. Max-length [100]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "total_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "un_billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_project'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_unique_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "project_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + }, + "billing_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you bill your customer. Allowed Values: fixed_cost_for_project, based_on_project_hours, based_on_staff_hours and based_on_task_hours" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you budget. Allowed Values: total_project_cost, total_project_hours, hours_per_task and hours_per_staff" + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "budget_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Give value, if you are estimating total project revenue." + }, + "cost_budget_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budgeted Cost to complete this project" + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "tasks": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task description. Max-length [500]" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate of a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budgeting." + } + }, + "description": null + }, + "users": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "is_current_user": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email of the user. Max-length [100]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "total_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "un_billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "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 \"required\": [\n \"project_name\",\n \"customer_id\",\n \"billing_type\",\n \"user_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"project_name\": {\n \"description\": \"Name of the project. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Network Distribution\"\n },\n \"customer_id\": {\n \"description\": \"ID of the customer.\",\n \"type\": \"string\",\n \"example\": \"460000000044001\"\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"example\": \"460000000098001\"\n },\n \"description\": {\n \"description\": \"Project description. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \"Distribution for the system of intermediaries between the producer of goods and/or services and the final user\"\n },\n \"billing_type\": {\n \"description\": \"The way you bill your customer. Allowed Values: fixed_cost_for_project, based_on_project_hours, based_on_staff_hours and based_on_task_hours\",\n \"type\": \"string\",\n \"example\": \"based_on_task_hours\"\n },\n \"rate\": {\n \"description\": \"Hourly rate for a task.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_type\": {\n \"description\": \"The way you budget. Allowed Values: total_project_cost, total_project_hours, hours_per_task and hours_per_staff\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_amount\": {\n \"description\": \"Give value, if you are estimating total project revenue.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"cost_budget_amount\": {\n \"description\": \"Budgeted Cost to complete this project\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \"1000.00\"\n },\n \"user_id\": {\n \"description\": \"ID of the user to be added to the project.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"tasks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"task_name\"\n ],\n \"properties\": {\n \"task_name\": {\n \"description\": \"Name of the task. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"description\": {\n \"description\": \"Task description. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"rate\": {\n \"description\": \"Hourly rate of a task.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"budget_hours\": {\n \"description\": \"Task budgeting.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n }\n }\n }\n },\n \"users\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"user_id\": {\n \"description\": \"ID of the user to be added to the project.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"is_current_user\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"user_name\": {\n \"description\": \"Name of the user. Max-length [200]\",\n \"type\": \"string\",\n \"example\": \"John David\"\n },\n \"email\": {\n \"description\": \"Email of the user. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"johndavid@zilliuminc.com\"\n },\n \"user_role\": {\n \"description\": \"Role to be assigned. Allowed Values: staff, admin and timesheetstaff\",\n \"type\": \"string\",\n \"example\": \"admin\"\n },\n \"status\": {\n \"type\": \"string\",\n \"example\": \"active\"\n },\n \"rate\": {\n \"description\": \"Hourly rate for a task.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"total_hours\": {\n \"type\": \"string\",\n \"example\": \"12:26\"\n },\n \"billed_hours\": {\n \"type\": \"string\",\n \"example\": \"12:27\"\n },\n \"un_billed_hours\": {\n \"type\": \"string\",\n \"example\": \"00:00\"\n },\n \"cost_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \"10.00\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectTask.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectTask.json new file mode 100644 index 00000000..a5e6f784 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectTask.json @@ -0,0 +1,286 @@ +{ + "name": "UpdateProjectTask", + "fully_qualified_name": "ZohoBooksApi.UpdateProjectTask@0.1.0", + "description": "Update the details of a project task.\n\nUse this tool to update the details of a specific task within a project in Zoho Books. It should be called when you need to change task information such as its status, due date, or other attributes.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books to identify the context for the task update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "Unique identifier of the project in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "task_identifier", + "required": true, + "description": "Unique identifier of the task to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the task." + }, + "inferrable": true, + "http_endpoint_parameter_name": "task_id" + }, + { + "name": "task_update_details", + "required": false, + "description": "JSON object containing task updates: task name (max 100 characters), description, rate (hourly), and budgeted hours.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the project." + }, + "rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_task'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/tasks/{task_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "task_id", + "tool_parameter_name": "task_identifier", + "description": "Unique identifier of the task.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the task." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "task_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the project." + }, + "rate": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours." + } + }, + "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 \"required\": [\n \"task_name\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"task_name\": {\n \"description\": \"The name of the task. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Painting\"\n },\n \"description\": {\n \"description\": \"The description of the project.\",\n \"type\": \"string\",\n \"example\": \"\"\n },\n \"rate\": {\n \"description\": \"Hourly rate for a task.\",\n \"type\": \"integer\",\n \"example\": 3\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours.\",\n \"type\": \"integer\",\n \"example\": \"\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectUserDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectUserDetails.json new file mode 100644 index 00000000..73d64df6 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectUserDetails.json @@ -0,0 +1,302 @@ +{ + "name": "UpdateProjectUserDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateProjectUserDetails@0.1.0", + "description": "Update user details in a specific project.\n\nUse this tool to update details of a user within a specified project in Zoho Books. It confirms the changes made to the user's information.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to update the user's project details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "project_identifier", + "required": true, + "description": "Unique identifier for the project in Zoho Books. Required to specify which project's user details are being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "user_identifier", + "required": true, + "description": "Unique identifier for the user to be updated within the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + }, + { + "name": "update_user_request_body", + "required": false, + "description": "JSON object containing user details to update, including 'user_name', 'user_role', 'rate', 'budget_hours', and 'cost_rate'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours." + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_project_user'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/{project_id}/users/{user_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "project_id", + "tool_parameter_name": "project_identifier", + "description": "Unique identifier of the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the project." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "Unique identifier of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "update_user_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours." + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "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 \"user_name\": {\n \"description\": \"Name of the user. Max-length [200]\",\n \"type\": \"string\",\n \"example\": \"John David\"\n },\n \"user_role\": {\n \"description\": \"Role to be assigned. Allowed Values: staff, admin and timesheetstaff\",\n \"type\": \"string\",\n \"example\": \"admin\"\n },\n \"rate\": {\n \"type\": \"number\",\n \"format\": \"float\",\n \"example\": 5000\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours.\",\n \"type\": \"string\",\n \"example\": \"0\"\n },\n \"cost_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \"10.00\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectWithCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectWithCustomField.json new file mode 100644 index 00000000..a614a90a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateProjectWithCustomField.json @@ -0,0 +1,723 @@ +{ + "name": "UpdateProjectWithCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateProjectWithCustomField@0.1.0", + "description": "Update or create projects using a unique custom field.\n\nThis tool updates an existing project or creates a new one if no match is found, using a unique custom field value in Zoho Books. Utilize it when you need to modify projects with specific identifiers.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "A string representing the organization's ID required to update or create a project using the custom field.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_api_name", + "required": true, + "description": "The API name of the unique custom field used to identify the project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "The unique value for the custom field used to identify or create a project.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "project_update_data", + "required": false, + "description": "JSON object containing project details like name, customer ID, currency, description, billing type, rate, budget info, users, and tasks.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + }, + "billing_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you bill your customer. Allowed Values: fixed_cost_for_project, based_on_project_hours, based_on_staff_hours and based_on_task_hours" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you budget. Allowed Values: total_project_cost, total_project_hours, hours_per_task and hours_per_staff" + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "budget_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Give value, if you are estimating total project revenue." + }, + "cost_budget_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budgeted Cost to complete this project" + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "tasks": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task description. Max-length [500]" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate of a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budgeting." + } + }, + "description": null + }, + "users": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "is_current_user": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email of the user. Max-length [100]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "total_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "un_billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_new_project_if_not_found", + "required": false, + "description": "Set to true to create a new project if no existing project matches the unique custom field value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_projects_using_custom_field'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_new_project_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "project_update_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the project. Max-length [100]" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the customer." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project description. Max-length [500]" + }, + "billing_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you bill your customer. Allowed Values: fixed_cost_for_project, based_on_project_hours, based_on_staff_hours and based_on_task_hours" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The way you budget. Allowed Values: total_project_cost, total_project_hours, hours_per_task and hours_per_staff" + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "budget_amount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Give value, if you are estimating total project revenue." + }, + "cost_budget_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budgeted Cost to complete this project" + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "tasks": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "task_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the task. Max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task description. Max-length [500]" + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate of a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budgeting." + } + }, + "description": null + }, + "users": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user to be added to the project." + }, + "is_current_user": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "user_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the user. Max-length [200]" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email of the user. Max-length [100]" + }, + "user_role": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Role to be assigned. Allowed Values: staff, admin and timesheetstaff" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly rate for a task." + }, + "budget_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Task budget hours" + }, + "total_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "un_billed_hours": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "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 \"required\": [\n \"project_name\",\n \"customer_id\",\n \"billing_type\",\n \"user_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"project_name\": {\n \"description\": \"Name of the project. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Network Distribution\"\n },\n \"customer_id\": {\n \"description\": \"ID of the customer.\",\n \"type\": \"string\",\n \"example\": \"460000000044001\"\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"example\": \"460000000098001\"\n },\n \"description\": {\n \"description\": \"Project description. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \"Distribution for the system of intermediaries between the producer of goods and/or services and the final user\"\n },\n \"billing_type\": {\n \"description\": \"The way you bill your customer. Allowed Values: fixed_cost_for_project, based_on_project_hours, based_on_staff_hours and based_on_task_hours\",\n \"type\": \"string\",\n \"example\": \"based_on_task_hours\"\n },\n \"rate\": {\n \"description\": \"Hourly rate for a task.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_type\": {\n \"description\": \"The way you budget. Allowed Values: total_project_cost, total_project_hours, hours_per_task and hours_per_staff\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_amount\": {\n \"description\": \"Give value, if you are estimating total project revenue.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"cost_budget_amount\": {\n \"description\": \"Budgeted Cost to complete this project\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \"1000.00\"\n },\n \"user_id\": {\n \"description\": \"ID of the user to be added to the project.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"tasks\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"task_name\"\n ],\n \"properties\": {\n \"task_name\": {\n \"description\": \"Name of the task. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"description\": {\n \"description\": \"Task description. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"rate\": {\n \"description\": \"Hourly rate of a task.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"budget_hours\": {\n \"description\": \"Task budgeting.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n }\n }\n }\n },\n \"users\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"user_id\": {\n \"description\": \"ID of the user to be added to the project.\",\n \"type\": \"string\",\n \"example\": \"INV-00003\"\n },\n \"is_current_user\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"user_name\": {\n \"description\": \"Name of the user. Max-length [200]\",\n \"type\": \"string\",\n \"example\": \"John David\"\n },\n \"email\": {\n \"description\": \"Email of the user. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"johndavid@zilliuminc.com\"\n },\n \"user_role\": {\n \"description\": \"Role to be assigned. Allowed Values: staff, admin and timesheetstaff\",\n \"type\": \"string\",\n \"example\": \"admin\"\n },\n \"status\": {\n \"type\": \"string\",\n \"example\": \"active\"\n },\n \"rate\": {\n \"description\": \"Hourly rate for a task.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"budget_hours\": {\n \"description\": \"Task budget hours\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"total_hours\": {\n \"type\": \"string\",\n \"example\": \"12:26\"\n },\n \"billed_hours\": {\n \"type\": \"string\",\n \"example\": \"12:27\"\n },\n \"un_billed_hours\": {\n \"type\": \"string\",\n \"example\": \"00:00\"\n },\n \"cost_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": \"10.00\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrder.json new file mode 100644 index 00000000..a4d004ca --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrder.json @@ -0,0 +1,1437 @@ +{ + "name": "UpdatePurchaseOrder", + "fully_qualified_name": "ZohoBooksApi.UpdatePurchaseOrder@0.1.0", + "description": "Update an existing purchase order in Zoho Books.\n\nUse this tool to update details of a specific purchase order in Zoho Books. It should be called when changes to a purchase order need to be made.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization for which the purchase order is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_identifier", + "required": true, + "description": "Unique identifier for the specific purchase order to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchase_order_id" + }, + { + "name": "attachment_file_path", + "required": false, + "description": "File path of the attachment with extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc, docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "inferrable": true, + "http_endpoint_parameter_name": "attachment" + }, + { + "name": "purchase_order_details", + "required": false, + "description": "JSON object containing details to update a purchase order, such as vendor information, currency, items, and terms.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor for whom the purchase order is being created. This value is mandatory to associate the purchase order with a specific vendor in your organization. You can obtain the vendor ID by listing all vendors using the contacts API. Ensure the vendor exists before referencing their ID here." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency for the purchase order. This value is mandatory to specify the currency in which the purchase order amounts will be displayed and processed. You can obtain the currency ID by listing all available currencies using the GET /settings/currencies API. Ensure the currency exists and is properly configured in your organization before referencing its ID here." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "purchaseorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the purchase order. This field is mandatory when auto number generation is disabled for your organization. If auto numbering is enabled, this field can be left empty as the system will automatically generate a sequential purchase order number. When manually specifying a number, ensure it follows your organization's numbering convention and is unique across all purchase orders." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the purchase order. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the pricebook to be used for this purchase order. The pricebook contains predefined pricing information for items and services. This field is optional and if not specified, the default pricebook will be used. You can obtain the pricebook ID by listing all available pricebooks in your organization. Ensure the pricebook exists and contains the relevant pricing information before referencing its ID here." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the purchase order. This field is optional and can be used to store additional reference information such as vendor order numbers, internal tracking codes, or any other external system identifiers. This reference number will be displayed on the purchase order document and can be used for cross-referencing with external systems or internal tracking purposes." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The discount amount or percentage to be applied to the purchase order total. This can be specified as a fixed amount or percentage value. Discounts are typically offered by vendors for bulk purchases, early payments, or promotional purposes. The discount reduces the total amount payable and affects the final purchase order total." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account where the discount amount will be recorded. This account is used to track and categorize discount expenses in your general ledger. The discount account should be configured as an expense or contra-revenue account to properly reflect the impact of discounts on your financial statements." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether the discount is applied before or after tax calculations. When set to true, the discount is applied to the subtotal before tax is calculated, resulting in tax being calculated on the discounted amount. When set to false, the discount is applied after tax calculations, which may affect the final total differently depending on your tax configuration." + }, + "billing_address_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billing address to be used for this purchase order. The billing address determines where invoices and related documents will be sent. This field is optional and if not specified, the default billing address from your organization settings will be used. You can obtain the billing address ID by listing all available addresses in your organization. Ensure the address exists and contains the correct billing information before referencing its ID here." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the CRM owner assigned to this purchase order. This field links the purchase order to a specific CRM user who is responsible for managing the vendor relationship and overseeing the procurement process. The CRM owner can track, follow up, and manage all aspects of this purchase order within the CRM system." + }, + "crm_custom_reference_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of CRM Custom Reference" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the purchase order. Obtain this value from the `template_id` field in the response of the GET `/purchaseorders/templates` API for your organization. Determines which template is used for the purchase order PDF document, controlling the layout, formatting, and visual appearance of the generated purchase order." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date when the purchase order was created or issued. This is the official date that appears on the purchase order document and is used for record-keeping, reporting, and tracking purposes. The date should be in YYYY-MM-DD format and typically represents when the purchase order was authorized and sent to the vendor." + }, + "delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format and is typically communicated to the vendor as part of the purchase order terms." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency exchange rate used to convert the purchase order amounts from the vendor's currency to your organization's base currency. This rate is applied when the purchase order is created in a foreign currency. A value of 1 indicates the same currency as your base currency. This rate affects all monetary calculations and reporting for this purchase order." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that specifies whether the line item rates include or exclude tax amounts. When set to true, the specified rates are inclusive of tax, meaning the tax amount is already included in the rate. When set to false, the rates are exclusive of tax, and tax will be calculated and added separately. This setting affects how tax calculations are performed and displayed on the purchase order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information, instructions, or comments to be displayed on the purchase order document. This field is typically used for delivery instructions, special requirements, vendor communications, or any other information relevant to the purchase order. The notes appear on the purchase order PDF and are visible to the vendor." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default notes for purchase order" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the purchase order document. This field is used to specify payment terms, delivery conditions, return policies, warranty information, or any other legal or business terms that apply to this transaction. The terms appear on the purchase order PDF and form part of the contractual agreement with the vendor." + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default terms for Purchase Orders" + }, + "ship_via": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipment Preference" + }, + "delivery_org_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization address where the goods or services from this purchase order should be delivered. This field specifies the delivery location within your organization, such as a warehouse, office, or branch location. The address details are retrieved from your organization's address book and displayed on the purchase order for vendor reference." + }, + "delivery_customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer for whom the goods or services in this purchase order are being procured. This field is used when the purchase order is created on behalf of a customer, such as in drop-shipping scenarios or when procuring items for specific customer projects. The customer information may be displayed on the purchase order for vendor reference." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the purchase order. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if customer should be updated" + }, + "salesorder_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order that is linked to this purchase order. This field establishes a connection between the sales order and purchase order, typically used in drop-shipping scenarios where you need to procure items to fulfill a customer's sales order. The linked sales order information may be displayed on the purchase order for vendor reference and internal tracking purposes." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item or service in the line item. Mandatory field that links to the item catalog. Determines item details, pricing, and inventory tracking. Obtain from GET /items API." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account for the line item. Mandatory for non-inventory items/services. Determines expense categorization in general ledger." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the line item on the purchase order. Auto-populated from item catalog when item_id is specified. Can be customized. Used for vendor reference and documentation." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional details, specifications, or notes about the line item. Can include technical specs, requirements, delivery instructions. Appears on purchase order document for vendor reference." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the quantity (e.g., Nos, kgs, hours, meters). Should match vendor pricing structure. Used for quantity calculations and pricing." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC Code for the Item" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the reverse charge tax for the line item. Used when buyer is responsible for paying tax instead of vendor. Applicable for unregistered vendors or specific tax regulations. Must reference valid reverse charge tax configuration." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price per item/service. Used to calculate total line item amount. Must be in purchase order currency. Tax inclusion depends on is_inclusive_tax setting. Affects pricing calculations and vendor billing." + }, + "quantity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being ordered. Used with rate to calculate total line item amount. Must match unit of measurement. Represents actual order quantity for delivery." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order of line item within purchase order. Determines display order on documents and reports. Typically numbered sequentially from 0 or 1. Maintains consistency across related documents." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax for the line item. Determines tax rate, name, and treatment for calculations. Used in tax amount computation and display on purchase order. Obtain from taxes API." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the VAT Acquistion" + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Reverse Charge" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of purchase order." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for purchase order." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system." + } + }, + "description": "Array of documents attached to the purchase order." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "If true, ignore automatic purchase order number generation and manually specify the order number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto purchase order number generation for this purchase order. This mandates the purchase order number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_purchase_order'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchase_order_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "attachment", + "tool_parameter_name": "attachment_file_path", + "description": "Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allowed Extensions: gif, png, jpeg, jpg, bmp, pdf, xls, xlsx, doc and docx." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto purchase order number generation for this purchase order. This mandates the purchase order number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto purchase order number generation for this purchase order. This mandates the purchase order number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchase_order_id", + "tool_parameter_name": "purchase_order_identifier", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "purchase_order_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor for whom the purchase order is being created. This value is mandatory to associate the purchase order with a specific vendor in your organization. You can obtain the vendor ID by listing all vendors using the contacts API. Ensure the vendor exists before referencing their ID here." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency for the purchase order. This value is mandatory to specify the currency in which the purchase order amounts will be displayed and processed. You can obtain the currency ID by listing all available currencies using the GET /settings/currencies API. Ensure the currency exists and is properly configured in your organization before referencing its ID here." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "purchaseorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the purchase order. This field is mandatory when auto number generation is disabled for your organization. If auto numbering is enabled, this field can be left empty as the system will automatically generate a sequential purchase order number. When manually specifying a number, ensure it follows your organization's numbering convention and is unique across all purchase orders." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the purchase order. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the pricebook to be used for this purchase order. The pricebook contains predefined pricing information for items and services. This field is optional and if not specified, the default pricebook will be used. You can obtain the pricebook ID by listing all available pricebooks in your organization. Ensure the pricebook exists and contains the relevant pricing information before referencing its ID here." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the purchase order. This field is optional and can be used to store additional reference information such as vendor order numbers, internal tracking codes, or any other external system identifiers. This reference number will be displayed on the purchase order document and can be used for cross-referencing with external systems or internal tracking purposes." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The discount amount or percentage to be applied to the purchase order total. This can be specified as a fixed amount or percentage value. Discounts are typically offered by vendors for bulk purchases, early payments, or promotional purposes. The discount reduces the total amount payable and affects the final purchase order total." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account where the discount amount will be recorded. This account is used to track and categorize discount expenses in your general ledger. The discount account should be configured as an expense or contra-revenue account to properly reflect the impact of discounts on your financial statements." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether the discount is applied before or after tax calculations. When set to true, the discount is applied to the subtotal before tax is calculated, resulting in tax being calculated on the discounted amount. When set to false, the discount is applied after tax calculations, which may affect the final total differently depending on your tax configuration." + }, + "billing_address_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billing address to be used for this purchase order. The billing address determines where invoices and related documents will be sent. This field is optional and if not specified, the default billing address from your organization settings will be used. You can obtain the billing address ID by listing all available addresses in your organization. Ensure the address exists and contains the correct billing information before referencing its ID here." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the CRM owner assigned to this purchase order. This field links the purchase order to a specific CRM user who is responsible for managing the vendor relationship and overseeing the procurement process. The CRM owner can track, follow up, and manage all aspects of this purchase order within the CRM system." + }, + "crm_custom_reference_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of CRM Custom Reference" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the purchase order. Obtain this value from the `template_id` field in the response of the GET `/purchaseorders/templates` API for your organization. Determines which template is used for the purchase order PDF document, controlling the layout, formatting, and visual appearance of the generated purchase order." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date when the purchase order was created or issued. This is the official date that appears on the purchase order document and is used for record-keeping, reporting, and tracking purposes. The date should be in YYYY-MM-DD format and typically represents when the purchase order was authorized and sent to the vendor." + }, + "delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format and is typically communicated to the vendor as part of the purchase order terms." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency exchange rate used to convert the purchase order amounts from the vendor's currency to your organization's base currency. This rate is applied when the purchase order is created in a foreign currency. A value of 1 indicates the same currency as your base currency. This rate affects all monetary calculations and reporting for this purchase order." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that specifies whether the line item rates include or exclude tax amounts. When set to true, the specified rates are inclusive of tax, meaning the tax amount is already included in the rate. When set to false, the rates are exclusive of tax, and tax will be calculated and added separately. This setting affects how tax calculations are performed and displayed on the purchase order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information, instructions, or comments to be displayed on the purchase order document. This field is typically used for delivery instructions, special requirements, vendor communications, or any other information relevant to the purchase order. The notes appear on the purchase order PDF and are visible to the vendor." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default notes for purchase order" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the purchase order document. This field is used to specify payment terms, delivery conditions, return policies, warranty information, or any other legal or business terms that apply to this transaction. The terms appear on the purchase order PDF and form part of the contractual agreement with the vendor." + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default terms for Purchase Orders" + }, + "ship_via": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipment Preference" + }, + "delivery_org_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization address where the goods or services from this purchase order should be delivered. This field specifies the delivery location within your organization, such as a warehouse, office, or branch location. The address details are retrieved from your organization's address book and displayed on the purchase order for vendor reference." + }, + "delivery_customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer for whom the goods or services in this purchase order are being procured. This field is used when the purchase order is created on behalf of a customer, such as in drop-shipping scenarios or when procuring items for specific customer projects. The customer information may be displayed on the purchase order for vendor reference." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the purchase order. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if customer should be updated" + }, + "salesorder_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order that is linked to this purchase order. This field establishes a connection between the sales order and purchase order, typically used in drop-shipping scenarios where you need to procure items to fulfill a customer's sales order. The linked sales order information may be displayed on the purchase order for vendor reference and internal tracking purposes." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item or service in the line item. Mandatory field that links to the item catalog. Determines item details, pricing, and inventory tracking. Obtain from GET /items API." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account for the line item. Mandatory for non-inventory items/services. Determines expense categorization in general ledger." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the line item on the purchase order. Auto-populated from item catalog when item_id is specified. Can be customized. Used for vendor reference and documentation." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional details, specifications, or notes about the line item. Can include technical specs, requirements, delivery instructions. Appears on purchase order document for vendor reference." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the quantity (e.g., Nos, kgs, hours, meters). Should match vendor pricing structure. Used for quantity calculations and pricing." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC Code for the Item" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the reverse charge tax for the line item. Used when buyer is responsible for paying tax instead of vendor. Applicable for unregistered vendors or specific tax regulations. Must reference valid reverse charge tax configuration." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price per item/service. Used to calculate total line item amount. Must be in purchase order currency. Tax inclusion depends on is_inclusive_tax setting. Affects pricing calculations and vendor billing." + }, + "quantity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being ordered. Used with rate to calculate total line item amount. Must match unit of measurement. Represents actual order quantity for delivery." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order of line item within purchase order. Determines display order on documents and reports. Typically numbered sequentially from 0 or 1. Maintains consistency across related documents." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax for the line item. Determines tax rate, name, and treatment for calculations. Used in tax amount computation and display on purchase order. Obtain from taxes API." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the VAT Acquistion" + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Reverse Charge" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of purchase order." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for purchase order." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system." + } + }, + "description": "Array of documents attached to the purchase order." + } + }, + "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 \"required\": [\n \"vendor_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"Unique identifier of the vendor for whom the purchase order is being created. This value is mandatory to associate the purchase order with a specific vendor in your organization. You can obtain the vendor ID by listing all vendors using the contacts API. Ensure the vendor exists before referencing their ID here.\",\n \"type\": \"string\",\n \"example\": \"460000000026049\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier of the currency for the purchase order. This value is mandatory to specify the currency in which the purchase order amounts will be displayed and processed. You can obtain the currency ID by listing all available currencies using the GET /settings/currencies API. Ensure the currency exists and is properly configured in your organization before referencing its ID here.\",\n \"type\": \"string\",\n \"example\": \"460000000000099\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 460000000031001\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"purchaseorder_number\": {\n \"description\": \"Unique identifier for the purchase order. This field is mandatory when auto number generation is disabled for your organization. If auto numbering is enabled, this field can be left empty as the system will automatically generate a sequential purchase order number. When manually specifying a number, ensure it follows your organization's numbering convention and is unique across all purchase orders.\",\n \"type\": \"string\",\n \"example\": \"PO-00001\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the purchase order. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Unique identifier of the pricebook to be used for this purchase order. The pricebook contains predefined pricing information for items and services. This field is optional and if not specified, the default pricebook will be used. You can obtain the pricebook ID by listing all available pricebooks in your organization. Ensure the pricebook exists and contains the relevant pricing information before referencing its ID here.\",\n \"type\": \"string\",\n \"example\": 460000000026089\n },\n \"reference_number\": {\n \"description\": \"External reference number or identifier for the purchase order. This field is optional and can be used to store additional reference information such as vendor order numbers, internal tracking codes, or any other external system identifiers. This reference number will be displayed on the purchase order document and can be used for cross-referencing with external systems or internal tracking purposes.\",\n \"type\": \"string\",\n \"example\": \"ER/0034\"\n },\n \"discount\": {\n \"description\": \"The discount amount or percentage to be applied to the purchase order total. This can be specified as a fixed amount or percentage value. Discounts are typically offered by vendors for bulk purchases, early payments, or promotional purposes. The discount reduces the total amount payable and affects the final purchase order total.\",\n \"type\": \"string\",\n \"example\": \"10\"\n },\n \"discount_account_id\": {\n \"description\": \"Unique identifier of the accounting account where the discount amount will be recorded. This account is used to track and categorize discount expenses in your general ledger. The discount account should be configured as an expense or contra-revenue account to properly reflect the impact of discounts on your financial statements.\",\n \"type\": \"string\",\n \"example\": \"460000000011105\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"Boolean flag that determines whether the discount is applied before or after tax calculations. When set to true, the discount is applied to the subtotal before tax is calculated, resulting in tax being calculated on the discounted amount. When set to false, the discount is applied after tax calculations, which may affect the final total differently depending on your tax configuration.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"billing_address_id\": {\n \"description\": \"Unique identifier of the billing address to be used for this purchase order. The billing address determines where invoices and related documents will be sent. This field is optional and if not specified, the default billing address from your organization settings will be used. You can obtain the billing address ID by listing all available addresses in your organization. Ensure the address exists and contains the correct billing information before referencing its ID here.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000017491\"\n },\n \"crm_owner_id\": {\n \"description\": \"Unique identifier of the CRM owner assigned to this purchase order. This field links the purchase order to a specific CRM user who is responsible for managing the vendor relationship and overseeing the procurement process. The CRM owner can track, follow up, and manage all aspects of this purchase order within the CRM system.\",\n \"type\": \"string\"\n },\n \"crm_custom_reference_id\": {\n \"description\": \"ID of CRM Custom Reference\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"template_id\": {\n \"description\": \"Unique identifier of the PDF template linked to the purchase order. Obtain this value from the `template_id` field in the response of the GET `/purchaseorders/templates` API for your organization. Determines which template is used for the purchase order PDF document, controlling the layout, formatting, and visual appearance of the generated purchase order.\",\n \"type\": \"string\",\n \"example\": \"460000000011003\"\n },\n \"date\": {\n \"description\": \"The date when the purchase order was created or issued. This is the official date that appears on the purchase order document and is used for record-keeping, reporting, and tracking purposes. The date should be in YYYY-MM-DD format and typically represents when the purchase order was authorized and sent to the vendor.\",\n \"type\": \"string\",\n \"example\": \"2014-02-10\"\n },\n \"delivery_date\": {\n \"description\": \"The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format and is typically communicated to the vendor as part of the purchase order terms.\",\n \"type\": \"string\",\n \"example\": \"2014-02-10\"\n },\n \"due_date\": {\n \"description\": \"The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format.\",\n \"type\": \"string\"\n },\n \"exchange_rate\": {\n \"description\": \"The currency exchange rate used to convert the purchase order amounts from the vendor's currency to your organization's base currency. This rate is applied when the purchase order is created in a foreign currency. A value of 1 indicates the same currency as your base currency. This rate affects all monetary calculations and reporting for this purchase order.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"is_inclusive_tax\": {\n \"description\": \"Boolean flag that specifies whether the line item rates include or exclude tax amounts. When set to true, the specified rates are inclusive of tax, meaning the tax amount is already included in the rate. When set to false, the rates are exclusive of tax, and tax will be calculated and added separately. This setting affects how tax calculations are performed and displayed on the purchase order.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"notes\": {\n \"description\": \"Additional information, instructions, or comments to be displayed on the purchase order document. This field is typically used for delivery instructions, special requirements, vendor communications, or any other information relevant to the purchase order. The notes appear on the purchase order PDF and are visible to the vendor.\",\n \"type\": \"string\",\n \"example\": \"Please deliver as soon as possible.\"\n },\n \"notes_default\": {\n \"description\": \"Default notes for purchase order\",\n \"type\": \"string\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions text to be displayed on the purchase order document. This field is used to specify payment terms, delivery conditions, return policies, warranty information, or any other legal or business terms that apply to this transaction. The terms appear on the purchase order PDF and form part of the contractual agreement with the vendor.\",\n \"type\": \"string\",\n \"example\": \"Thanks for your business.\"\n },\n \"terms_default\": {\n \"description\": \"Default terms for Purchase Orders\",\n \"type\": \"string\"\n },\n \"ship_via\": {\n \"description\": \"Shipment Preference\",\n \"type\": \"string\"\n },\n \"delivery_org_address_id\": {\n \"description\": \"Unique identifier of the organization address where the goods or services from this purchase order should be delivered. This field specifies the delivery location within your organization, such as a warehouse, office, or branch location. The address details are retrieved from your organization's address book and displayed on the purchase order for vendor reference.\",\n \"type\": \"string\"\n },\n \"delivery_customer_id\": {\n \"description\": \"Unique identifier of the customer for whom the goods or services in this purchase order are being procured. This field is used when the purchase order is created on behalf of a customer, such as in drop-shipping scenarios or when procuring items for specific customer projects. The customer information may be displayed on the purchase order for vendor reference.\",\n \"type\": \"string\"\n },\n \"attention\": {\n \"description\": \"The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items.\",\n \"type\": \"string\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the purchase order. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_update_customer\": {\n \"description\": \"Check if customer should be updated\",\n \"type\": \"string\"\n },\n \"salesorder_id\": {\n \"description\": \"Unique identifier of the sales order that is linked to this purchase order. This field establishes a connection between the sales order and purchase order, typically used in drop-shipping scenarios where you need to procure items to fulfill a customer's sales order. The linked sales order information may be displayed on the purchase order for vendor reference and internal tracking purposes.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000124728314\"\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"description\": \"ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created.\",\n \"type\": \"string\",\n \"example\": \"460000000074009\"\n },\n \"item_id\": {\n \"description\": \"Unique identifier of the item or service in the line item. Mandatory field that links to the item catalog. Determines item details, pricing, and inventory tracking. Obtain from GET /items API.\",\n \"type\": \"string\",\n \"example\": \"460000000027009\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier of the accounting account for the line item. Mandatory for non-inventory items/services. Determines expense categorization in general ledger.\",\n \"type\": \"string\",\n \"example\": \"460000000074003\"\n },\n \"name\": {\n \"description\": \"Display name of the line item on the purchase order. Auto-populated from item catalog when item_id is specified. Can be customized. Used for vendor reference and documentation.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Additional details, specifications, or notes about the line item. Can include technical specs, requirements, delivery instructions. Appears on purchase order document for vendor reference.\",\n \"type\": \"string\"\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the quantity (e.g., Nos, kgs, hours, meters). Should match vendor pricing structure. Used for quantity calculations and pricing.\",\n \"type\": \"string\",\n \"example\": \"Nos\"\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"hsn_or_sac\": {\n \"description\": \"HSN or SAC Code for the Item\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Unique identifier of the reverse charge tax for the line item. Used when buyer is responsible for paying tax instead of vendor. Applicable for unregistered vendors or specific tax regulations. Must reference valid reverse charge tax configuration.\",\n \"type\": \"string\",\n \"example\": 460000000026068\n },\n \"rate\": {\n \"description\": \"Unit price per item/service. Used to calculate total line item amount. Must be in purchase order currency. Tax inclusion depends on is_inclusive_tax setting. Affects pricing calculations and vendor billing.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112\n },\n \"quantity\": {\n \"description\": \"Number of units being ordered. Used with rate to calculate total line item amount. Must match unit of measurement. Represents actual order quantity for delivery.\",\n \"type\": \"string\",\n \"example\": 1\n },\n \"item_order\": {\n \"description\": \"Sequential order of line item within purchase order. Determines display order on documents and reports. Typically numbered sequentially from 0 or 1. Maintains consistency across related documents.\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax for the line item. Determines tax rate, name, and treatment for calculations. Used in tax amount computation and display on purchase order. Obtain from taxes API.\",\n \"type\": \"string\"\n },\n \"tds_tax_id\": {\n \"type\": \"string\",\n \"example\": 90300000087370,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"ID of the VAT Acquistion\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"ID of the Reverse Charge\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n }\n }\n }\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"documents\": {\n \"description\": \"Array of documents attached to the purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"description\": \"ID of the Document\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"file_name\": {\n \"description\": \"Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderBillingAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderBillingAddress.json new file mode 100644 index 00000000..c081b0b4 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderBillingAddress.json @@ -0,0 +1,317 @@ +{ + "name": "UpdatePurchaseOrderBillingAddress", + "fully_qualified_name": "ZohoBooksApi.UpdatePurchaseOrderBillingAddress@0.1.0", + "description": "Update the billing address for a specific purchase order.\n\nUse this tool to modify the billing address of a single purchase order in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to update the billing address in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_identifier", + "required": true, + "description": "Unique identifier for the specific purchase order to update the billing address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "purchase_order_billing_address", + "required": false, + "description": "A JSON object containing fields like address, city, state, zip, country, fax, attention, and is_update_customer for updating the billing address.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address associated with the Purchase Order" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City involved in the Address" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State Involved in the Address" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP Code of the Address" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country involved in the Address" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax Number" + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items." + }, + "is_update_customer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if customer should be updated" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_purchase_order_billing_address'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/address/billing", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_identifier", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "purchase_order_billing_address", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address associated with the Purchase Order" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City involved in the Address" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State Involved in the Address" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP Code of the Address" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country involved in the Address" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax Number" + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items." + }, + "is_update_customer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if customer should be updated" + } + }, + "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 \"address\": {\n \"description\": \"Address associated with the Purchase Order\",\n \"type\": \"string\"\n },\n \"city\": {\n \"description\": \"City involved in the Address\",\n \"type\": \"string\"\n },\n \"state\": {\n \"description\": \"State Involved in the Address\",\n \"type\": \"string\"\n },\n \"zip\": {\n \"description\": \"ZIP Code of the Address\",\n \"type\": \"string\"\n },\n \"country\": {\n \"description\": \"Country involved in the Address\",\n \"type\": \"string\"\n },\n \"fax\": {\n \"description\": \"Fax Number\",\n \"type\": \"string\"\n },\n \"attention\": {\n \"description\": \"The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items.\",\n \"type\": \"string\"\n },\n \"is_update_customer\": {\n \"description\": \"Check if customer should be updated\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderByCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderByCustomField.json new file mode 100644 index 00000000..e3958a86 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderByCustomField.json @@ -0,0 +1,1437 @@ +{ + "name": "UpdatePurchaseOrderByCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdatePurchaseOrderByCustomField@0.1.0", + "description": "Update or create a purchase order via custom field value.\n\nUse this tool to update an existing purchase order or create a new one if needed, based on a unique custom field value. It should be called when you need to modify a purchase order by using a custom field's unique identifier.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. This is required to specify which organization's purchase order needs to be updated or created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_api_name", + "required": true, + "description": "The API name of the unique custom field used to update or identify the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "Unique value for the custom field to retrieve and update the purchase order. This should match the specific custom field value used to identify the order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "purchase_order_details", + "required": false, + "description": "A JSON object detailing the purchase order, including vendor, currency, line items, and optional fields like discounts and notes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor for whom the purchase order is being created. This value is mandatory to associate the purchase order with a specific vendor in your organization. You can obtain the vendor ID by listing all vendors using the contacts API. Ensure the vendor exists before referencing their ID here." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency for the purchase order. This value is mandatory to specify the currency in which the purchase order amounts will be displayed and processed. You can obtain the currency ID by listing all available currencies using the GET /settings/currencies API. Ensure the currency exists and is properly configured in your organization before referencing its ID here." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "purchaseorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the purchase order. This field is mandatory when auto number generation is disabled for your organization. If auto numbering is enabled, this field can be left empty as the system will automatically generate a sequential purchase order number. When manually specifying a number, ensure it follows your organization's numbering convention and is unique across all purchase orders." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the purchase order. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the pricebook to be used for this purchase order. The pricebook contains predefined pricing information for items and services. This field is optional and if not specified, the default pricebook will be used. You can obtain the pricebook ID by listing all available pricebooks in your organization. Ensure the pricebook exists and contains the relevant pricing information before referencing its ID here." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the purchase order. This field is optional and can be used to store additional reference information such as vendor order numbers, internal tracking codes, or any other external system identifiers. This reference number will be displayed on the purchase order document and can be used for cross-referencing with external systems or internal tracking purposes." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The discount amount or percentage to be applied to the purchase order total. This can be specified as a fixed amount or percentage value. Discounts are typically offered by vendors for bulk purchases, early payments, or promotional purposes. The discount reduces the total amount payable and affects the final purchase order total." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account where the discount amount will be recorded. This account is used to track and categorize discount expenses in your general ledger. The discount account should be configured as an expense or contra-revenue account to properly reflect the impact of discounts on your financial statements." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether the discount is applied before or after tax calculations. When set to true, the discount is applied to the subtotal before tax is calculated, resulting in tax being calculated on the discounted amount. When set to false, the discount is applied after tax calculations, which may affect the final total differently depending on your tax configuration." + }, + "billing_address_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billing address to be used for this purchase order. The billing address determines where invoices and related documents will be sent. This field is optional and if not specified, the default billing address from your organization settings will be used. You can obtain the billing address ID by listing all available addresses in your organization. Ensure the address exists and contains the correct billing information before referencing its ID here." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the CRM owner assigned to this purchase order. This field links the purchase order to a specific CRM user who is responsible for managing the vendor relationship and overseeing the procurement process. The CRM owner can track, follow up, and manage all aspects of this purchase order within the CRM system." + }, + "crm_custom_reference_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of CRM Custom Reference" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the purchase order. Obtain this value from the `template_id` field in the response of the GET `/purchaseorders/templates` API for your organization. Determines which template is used for the purchase order PDF document, controlling the layout, formatting, and visual appearance of the generated purchase order." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date when the purchase order was created or issued. This is the official date that appears on the purchase order document and is used for record-keeping, reporting, and tracking purposes. The date should be in YYYY-MM-DD format and typically represents when the purchase order was authorized and sent to the vendor." + }, + "delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format and is typically communicated to the vendor as part of the purchase order terms." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency exchange rate used to convert the purchase order amounts from the vendor's currency to your organization's base currency. This rate is applied when the purchase order is created in a foreign currency. A value of 1 indicates the same currency as your base currency. This rate affects all monetary calculations and reporting for this purchase order." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that specifies whether the line item rates include or exclude tax amounts. When set to true, the specified rates are inclusive of tax, meaning the tax amount is already included in the rate. When set to false, the rates are exclusive of tax, and tax will be calculated and added separately. This setting affects how tax calculations are performed and displayed on the purchase order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information, instructions, or comments to be displayed on the purchase order document. This field is typically used for delivery instructions, special requirements, vendor communications, or any other information relevant to the purchase order. The notes appear on the purchase order PDF and are visible to the vendor." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default notes for purchase order" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the purchase order document. This field is used to specify payment terms, delivery conditions, return policies, warranty information, or any other legal or business terms that apply to this transaction. The terms appear on the purchase order PDF and form part of the contractual agreement with the vendor." + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default terms for Purchase Orders" + }, + "ship_via": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipment Preference" + }, + "delivery_org_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization address where the goods or services from this purchase order should be delivered. This field specifies the delivery location within your organization, such as a warehouse, office, or branch location. The address details are retrieved from your organization's address book and displayed on the purchase order for vendor reference." + }, + "delivery_customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer for whom the goods or services in this purchase order are being procured. This field is used when the purchase order is created on behalf of a customer, such as in drop-shipping scenarios or when procuring items for specific customer projects. The customer information may be displayed on the purchase order for vendor reference." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the purchase order. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if customer should be updated" + }, + "salesorder_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order that is linked to this purchase order. This field establishes a connection between the sales order and purchase order, typically used in drop-shipping scenarios where you need to procure items to fulfill a customer's sales order. The linked sales order information may be displayed on the purchase order for vendor reference and internal tracking purposes." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item or service in the line item. Mandatory field that links to the item catalog. Determines item details, pricing, and inventory tracking. Obtain from GET /items API." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account for the line item. Mandatory for non-inventory items/services. Determines expense categorization in general ledger." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the line item on the purchase order. Auto-populated from item catalog when item_id is specified. Can be customized. Used for vendor reference and documentation." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional details, specifications, or notes about the line item. Can include technical specs, requirements, delivery instructions. Appears on purchase order document for vendor reference." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the quantity (e.g., Nos, kgs, hours, meters). Should match vendor pricing structure. Used for quantity calculations and pricing." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC Code for the Item" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the reverse charge tax for the line item. Used when buyer is responsible for paying tax instead of vendor. Applicable for unregistered vendors or specific tax regulations. Must reference valid reverse charge tax configuration." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price per item/service. Used to calculate total line item amount. Must be in purchase order currency. Tax inclusion depends on is_inclusive_tax setting. Affects pricing calculations and vendor billing." + }, + "quantity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being ordered. Used with rate to calculate total line item amount. Must match unit of measurement. Represents actual order quantity for delivery." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order of line item within purchase order. Determines display order on documents and reports. Typically numbered sequentially from 0 or 1. Maintains consistency across related documents." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax for the line item. Determines tax rate, name, and treatment for calculations. Used in tax amount computation and display on purchase order. Obtain from taxes API." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the VAT Acquistion" + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Reverse Charge" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of purchase order." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for purchase order." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system." + } + }, + "description": "Array of documents attached to the purchase order." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_new_order_if_not_found", + "required": false, + "description": "Set to true to create a new purchase order if no existing order matches the unique custom field value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_purchase_order_using_custom_field'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_new_order_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "purchase_order_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor for whom the purchase order is being created. This value is mandatory to associate the purchase order with a specific vendor in your organization. You can obtain the vendor ID by listing all vendors using the contacts API. Ensure the vendor exists before referencing their ID here." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the currency for the purchase order. This value is mandatory to specify the currency in which the purchase order amounts will be displayed and processed. You can obtain the currency ID by listing all available currencies using the GET /settings/currencies API. Ensure the currency exists and is properly configured in your organization before referencing its ID here." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person" + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "purchaseorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the purchase order. This field is mandatory when auto number generation is disabled for your organization. If auto numbering is enabled, this field can be left empty as the system will automatically generate a sequential purchase order number. When manually specifying a number, ensure it follows your organization's numbering convention and is unique across all purchase orders." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the purchase order. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the pricebook to be used for this purchase order. The pricebook contains predefined pricing information for items and services. This field is optional and if not specified, the default pricebook will be used. You can obtain the pricebook ID by listing all available pricebooks in your organization. Ensure the pricebook exists and contains the relevant pricing information before referencing its ID here." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference number or identifier for the purchase order. This field is optional and can be used to store additional reference information such as vendor order numbers, internal tracking codes, or any other external system identifiers. This reference number will be displayed on the purchase order document and can be used for cross-referencing with external systems or internal tracking purposes." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The discount amount or percentage to be applied to the purchase order total. This can be specified as a fixed amount or percentage value. Discounts are typically offered by vendors for bulk purchases, early payments, or promotional purposes. The discount reduces the total amount payable and affects the final purchase order total." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account where the discount amount will be recorded. This account is used to track and categorize discount expenses in your general ledger. The discount account should be configured as an expense or contra-revenue account to properly reflect the impact of discounts on your financial statements." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that determines whether the discount is applied before or after tax calculations. When set to true, the discount is applied to the subtotal before tax is calculated, resulting in tax being calculated on the discounted amount. When set to false, the discount is applied after tax calculations, which may affect the final total differently depending on your tax configuration." + }, + "billing_address_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the billing address to be used for this purchase order. The billing address determines where invoices and related documents will be sent. This field is optional and if not specified, the default billing address from your organization settings will be used. You can obtain the billing address ID by listing all available addresses in your organization. Ensure the address exists and contains the correct billing information before referencing its ID here." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the CRM owner assigned to this purchase order. This field links the purchase order to a specific CRM user who is responsible for managing the vendor relationship and overseeing the procurement process. The CRM owner can track, follow up, and manage all aspects of this purchase order within the CRM system." + }, + "crm_custom_reference_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of CRM Custom Reference" + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the PDF template linked to the purchase order. Obtain this value from the `template_id` field in the response of the GET `/purchaseorders/templates` API for your organization. Determines which template is used for the purchase order PDF document, controlling the layout, formatting, and visual appearance of the generated purchase order." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date when the purchase order was created or issued. This is the official date that appears on the purchase order document and is used for record-keeping, reporting, and tracking purposes. The date should be in YYYY-MM-DD format and typically represents when the purchase order was authorized and sent to the vendor." + }, + "delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format and is typically communicated to the vendor as part of the purchase order terms." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currency exchange rate used to convert the purchase order amounts from the vendor's currency to your organization's base currency. This rate is applied when the purchase order is created in a foreign currency. A value of 1 indicates the same currency as your base currency. This rate affects all monetary calculations and reporting for this purchase order." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag that specifies whether the line item rates include or exclude tax amounts. When set to true, the specified rates are inclusive of tax, meaning the tax amount is already included in the rate. When set to false, the rates are exclusive of tax, and tax will be calculated and added separately. This setting affects how tax calculations are performed and displayed on the purchase order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional information, instructions, or comments to be displayed on the purchase order document. This field is typically used for delivery instructions, special requirements, vendor communications, or any other information relevant to the purchase order. The notes appear on the purchase order PDF and are visible to the vendor." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default notes for purchase order" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and conditions text to be displayed on the purchase order document. This field is used to specify payment terms, delivery conditions, return policies, warranty information, or any other legal or business terms that apply to this transaction. The terms appear on the purchase order PDF and form part of the contractual agreement with the vendor." + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default terms for Purchase Orders" + }, + "ship_via": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Shipment Preference" + }, + "delivery_org_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the organization address where the goods or services from this purchase order should be delivered. This field specifies the delivery location within your organization, such as a warehouse, office, or branch location. The address details are retrieved from your organization's address book and displayed on the purchase order for vendor reference." + }, + "delivery_customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the customer for whom the goods or services in this purchase order are being procured. This field is used when the purchase order is created on behalf of a customer, such as in drop-shipping scenarios or when procuring items for specific customer projects. The customer information may be displayed on the purchase order for vendor reference." + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the purchase order. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "is_update_customer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if customer should be updated" + }, + "salesorder_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order that is linked to this purchase order. This field establishes a connection between the sales order and purchase order, typically used in drop-shipping scenarios where you need to procure items to fulfill a customer's sales order. The linked sales order information may be displayed on the purchase order for vendor reference and internal tracking purposes." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item or service in the line item. Mandatory field that links to the item catalog. Determines item details, pricing, and inventory tracking. Obtain from GET /items API." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the accounting account for the line item. Mandatory for non-inventory items/services. Determines expense categorization in general ledger." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Display name of the line item on the purchase order. Auto-populated from item catalog when item_id is specified. Can be customized. Used for vendor reference and documentation." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional details, specifications, or notes about the line item. Can include technical specs, requirements, delivery instructions. Appears on purchase order document for vendor reference." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the quantity (e.g., Nos, kgs, hours, meters). Should match vendor pricing structure. Used for quantity calculations and pricing." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN or SAC Code for the Item" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the reverse charge tax for the line item. Used when buyer is responsible for paying tax instead of vendor. Applicable for unregistered vendors or specific tax regulations. Must reference valid reverse charge tax configuration." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price per item/service. Used to calculate total line item amount. Must be in purchase order currency. Tax inclusion depends on is_inclusive_tax setting. Affects pricing calculations and vendor billing." + }, + "quantity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being ordered. Used with rate to calculate total line item amount. Must match unit of measurement. Represents actual order quantity for delivery." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order of line item within purchase order. Determines display order on documents and reports. Typically numbered sequentially from 0 or 1. Maintains consistency across related documents." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax for the line item. Determines tax rate, name, and treatment for calculations. Used in tax amount computation and display on purchase order. Obtain from taxes API." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the VAT Acquistion" + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Reverse Charge" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of purchase order." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for purchase order." + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system." + } + }, + "description": "Array of documents attached to the purchase order." + } + }, + "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 \"required\": [\n \"vendor_id\",\n \"line_items\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"Unique identifier of the vendor for whom the purchase order is being created. This value is mandatory to associate the purchase order with a specific vendor in your organization. You can obtain the vendor ID by listing all vendors using the contacts API. Ensure the vendor exists before referencing their ID here.\",\n \"type\": \"string\",\n \"example\": \"460000000026049\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier of the currency for the purchase order. This value is mandatory to specify the currency in which the purchase order amounts will be displayed and processed. You can obtain the currency ID by listing all available currencies using the GET /settings/currencies API. Ensure the currency exists and is properly configured in your organization before referencing its ID here.\",\n \"type\": \"string\",\n \"example\": \"460000000000099\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 460000000031001\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"purchaseorder_number\": {\n \"description\": \"Unique identifier for the purchase order. This field is mandatory when auto number generation is disabled for your organization. If auto numbering is enabled, this field can be left empty as the system will automatically generate a sequential purchase order number. When manually specifying a number, ensure it follows your organization's numbering convention and is unique across all purchase orders.\",\n \"type\": \"string\",\n \"example\": \"PO-00001\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the purchase order. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Unique identifier of the pricebook to be used for this purchase order. The pricebook contains predefined pricing information for items and services. This field is optional and if not specified, the default pricebook will be used. You can obtain the pricebook ID by listing all available pricebooks in your organization. Ensure the pricebook exists and contains the relevant pricing information before referencing its ID here.\",\n \"type\": \"string\",\n \"example\": 460000000026089\n },\n \"reference_number\": {\n \"description\": \"External reference number or identifier for the purchase order. This field is optional and can be used to store additional reference information such as vendor order numbers, internal tracking codes, or any other external system identifiers. This reference number will be displayed on the purchase order document and can be used for cross-referencing with external systems or internal tracking purposes.\",\n \"type\": \"string\",\n \"example\": \"ER/0034\"\n },\n \"discount\": {\n \"description\": \"The discount amount or percentage to be applied to the purchase order total. This can be specified as a fixed amount or percentage value. Discounts are typically offered by vendors for bulk purchases, early payments, or promotional purposes. The discount reduces the total amount payable and affects the final purchase order total.\",\n \"type\": \"string\",\n \"example\": \"10\"\n },\n \"discount_account_id\": {\n \"description\": \"Unique identifier of the accounting account where the discount amount will be recorded. This account is used to track and categorize discount expenses in your general ledger. The discount account should be configured as an expense or contra-revenue account to properly reflect the impact of discounts on your financial statements.\",\n \"type\": \"string\",\n \"example\": \"460000000011105\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"Boolean flag that determines whether the discount is applied before or after tax calculations. When set to true, the discount is applied to the subtotal before tax is calculated, resulting in tax being calculated on the discounted amount. When set to false, the discount is applied after tax calculations, which may affect the final total differently depending on your tax configuration.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"billing_address_id\": {\n \"description\": \"Unique identifier of the billing address to be used for this purchase order. The billing address determines where invoices and related documents will be sent. This field is optional and if not specified, the default billing address from your organization settings will be used. You can obtain the billing address ID by listing all available addresses in your organization. Ensure the address exists and contains the correct billing information before referencing its ID here.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000017491\"\n },\n \"crm_owner_id\": {\n \"description\": \"Unique identifier of the CRM owner assigned to this purchase order. This field links the purchase order to a specific CRM user who is responsible for managing the vendor relationship and overseeing the procurement process. The CRM owner can track, follow up, and manage all aspects of this purchase order within the CRM system.\",\n \"type\": \"string\"\n },\n \"crm_custom_reference_id\": {\n \"description\": \"ID of CRM Custom Reference\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"template_id\": {\n \"description\": \"Unique identifier of the PDF template linked to the purchase order. Obtain this value from the `template_id` field in the response of the GET `/purchaseorders/templates` API for your organization. Determines which template is used for the purchase order PDF document, controlling the layout, formatting, and visual appearance of the generated purchase order.\",\n \"type\": \"string\",\n \"example\": \"460000000011003\"\n },\n \"date\": {\n \"description\": \"The date when the purchase order was created or issued. This is the official date that appears on the purchase order document and is used for record-keeping, reporting, and tracking purposes. The date should be in YYYY-MM-DD format and typically represents when the purchase order was authorized and sent to the vendor.\",\n \"type\": \"string\",\n \"example\": \"2014-02-10\"\n },\n \"delivery_date\": {\n \"description\": \"The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format and is typically communicated to the vendor as part of the purchase order terms.\",\n \"type\": \"string\",\n \"example\": \"2014-02-10\"\n },\n \"due_date\": {\n \"description\": \"The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format.\",\n \"type\": \"string\"\n },\n \"exchange_rate\": {\n \"description\": \"The currency exchange rate used to convert the purchase order amounts from the vendor's currency to your organization's base currency. This rate is applied when the purchase order is created in a foreign currency. A value of 1 indicates the same currency as your base currency. This rate affects all monetary calculations and reporting for this purchase order.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"is_inclusive_tax\": {\n \"description\": \"Boolean flag that specifies whether the line item rates include or exclude tax amounts. When set to true, the specified rates are inclusive of tax, meaning the tax amount is already included in the rate. When set to false, the rates are exclusive of tax, and tax will be calculated and added separately. This setting affects how tax calculations are performed and displayed on the purchase order.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"notes\": {\n \"description\": \"Additional information, instructions, or comments to be displayed on the purchase order document. This field is typically used for delivery instructions, special requirements, vendor communications, or any other information relevant to the purchase order. The notes appear on the purchase order PDF and are visible to the vendor.\",\n \"type\": \"string\",\n \"example\": \"Please deliver as soon as possible.\"\n },\n \"notes_default\": {\n \"description\": \"Default notes for purchase order\",\n \"type\": \"string\"\n },\n \"terms\": {\n \"description\": \"Terms and conditions text to be displayed on the purchase order document. This field is used to specify payment terms, delivery conditions, return policies, warranty information, or any other legal or business terms that apply to this transaction. The terms appear on the purchase order PDF and form part of the contractual agreement with the vendor.\",\n \"type\": \"string\",\n \"example\": \"Thanks for your business.\"\n },\n \"terms_default\": {\n \"description\": \"Default terms for Purchase Orders\",\n \"type\": \"string\"\n },\n \"ship_via\": {\n \"description\": \"Shipment Preference\",\n \"type\": \"string\"\n },\n \"delivery_org_address_id\": {\n \"description\": \"Unique identifier of the organization address where the goods or services from this purchase order should be delivered. This field specifies the delivery location within your organization, such as a warehouse, office, or branch location. The address details are retrieved from your organization's address book and displayed on the purchase order for vendor reference.\",\n \"type\": \"string\"\n },\n \"delivery_customer_id\": {\n \"description\": \"Unique identifier of the customer for whom the goods or services in this purchase order are being procured. This field is used when the purchase order is created on behalf of a customer, such as in drop-shipping scenarios or when procuring items for specific customer projects. The customer information may be displayed on the purchase order for vendor reference.\",\n \"type\": \"string\"\n },\n \"attention\": {\n \"description\": \"The name or designation of the specific person who should be contacted or notified regarding the delivery of goods or services from this purchase order. This field is typically used to specify the primary contact person at the delivery location, such as a warehouse manager, office administrator, or project coordinator who will receive and process the delivered items.\",\n \"type\": \"string\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the purchase order. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_update_customer\": {\n \"description\": \"Check if customer should be updated\",\n \"type\": \"string\"\n },\n \"salesorder_id\": {\n \"description\": \"Unique identifier of the sales order that is linked to this purchase order. This field establishes a connection between the sales order and purchase order, typically used in drop-shipping scenarios where you need to procure items to fulfill a customer's sales order. The linked sales order information may be displayed on the purchase order for vendor reference and internal tracking purposes.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000124728314\"\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"description\": \"ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created.\",\n \"type\": \"string\",\n \"example\": \"460000000074009\"\n },\n \"item_id\": {\n \"description\": \"Unique identifier of the item or service in the line item. Mandatory field that links to the item catalog. Determines item details, pricing, and inventory tracking. Obtain from GET /items API.\",\n \"type\": \"string\",\n \"example\": \"460000000027009\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier of the accounting account for the line item. Mandatory for non-inventory items/services. Determines expense categorization in general ledger.\",\n \"type\": \"string\",\n \"example\": \"460000000074003\"\n },\n \"name\": {\n \"description\": \"Display name of the line item on the purchase order. Auto-populated from item catalog when item_id is specified. Can be customized. Used for vendor reference and documentation.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Additional details, specifications, or notes about the line item. Can include technical specs, requirements, delivery instructions. Appears on purchase order document for vendor reference.\",\n \"type\": \"string\"\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the quantity (e.g., Nos, kgs, hours, meters). Should match vendor pricing structure. Used for quantity calculations and pricing.\",\n \"type\": \"string\",\n \"example\": \"Nos\"\n },\n \"location_id\": {\n \"description\": \"Unique identifier of the business location or branch where this purchase order is being created and managed. This field is used to associate the purchase order with a specific location within your organization, enabling location-based reporting, inventory tracking, and multi-location business operations. The location information affects how the purchase order is processed and where inventory is received.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"hsn_or_sac\": {\n \"description\": \"HSN or SAC Code for the Item\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Unique identifier of the reverse charge tax for the line item. Used when buyer is responsible for paying tax instead of vendor. Applicable for unregistered vendors or specific tax regulations. Must reference valid reverse charge tax configuration.\",\n \"type\": \"string\",\n \"example\": 460000000026068\n },\n \"rate\": {\n \"description\": \"Unit price per item/service. Used to calculate total line item amount. Must be in purchase order currency. Tax inclusion depends on is_inclusive_tax setting. Affects pricing calculations and vendor billing.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112\n },\n \"quantity\": {\n \"description\": \"Number of units being ordered. Used with rate to calculate total line item amount. Must match unit of measurement. Represents actual order quantity for delivery.\",\n \"type\": \"string\",\n \"example\": 1\n },\n \"item_order\": {\n \"description\": \"Sequential order of line item within purchase order. Determines display order on documents and reports. Typically numbered sequentially from 0 or 1. Maintains consistency across related documents.\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"tax_id\": {\n \"description\": \"Unique identifier of the tax for the line item. Determines tax rate, name, and treatment for calculations. Used in tax amount computation and display on purchase order. Obtain from taxes API.\",\n \"type\": \"string\"\n },\n \"tds_tax_id\": {\n \"type\": \"string\",\n \"example\": 90300000087370,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"ID of the VAT Acquistion\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"ID of the Reverse Charge\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n }\n }\n }\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"documents\": {\n \"description\": \"Array of documents attached to the purchase order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"description\": \"ID of the Document\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"file_name\": {\n \"description\": \"Name of the attached document file. Includes file extension and represents the original filename as uploaded. Used for display purposes and file identification in the system.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderComment.json new file mode 100644 index 00000000..ae0d9f5e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderComment.json @@ -0,0 +1,254 @@ +{ + "name": "UpdatePurchaseOrderComment", + "fully_qualified_name": "ZohoBooksApi.UpdatePurchaseOrderComment@0.1.0", + "description": "Update an existing comment on a purchase order.\n\nUse this tool to update a specific comment on a purchase order in Zoho Books. It should be called when you need to modify or correct information in a comment related to a purchase order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID representing the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "The unique identifier for the purchase order to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "comment_identifier", + "required": true, + "description": "Unique identifier of the comment to be updated in the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + }, + { + "name": "comment_update_details", + "required": false, + "description": "JSON object containing the updated comment description and expected delivery date. Include 'description' for the comment text and 'expected_delivery_date' in YYYY-MM-DD format.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + }, + "expected_delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_purchase_order_comment'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/comments/{comment_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "comment_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + }, + "expected_delivery_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format." + } + }, + "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 \"description\": {\n \"description\": \"The description of the comment.\",\n \"type\": \"string\",\n \"example\": \"This is a comment.\"\n },\n \"expected_delivery_date\": {\n \"description\": \"The expected delivery date when the goods or services ordered in this purchase order should be received. This date is used for planning, scheduling, and tracking deliveries. It helps in managing inventory, coordinating with vendors, and ensuring timely receipt of ordered items. The date should be in YYYY-MM-DD format.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderEmailAttachment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderEmailAttachment.json new file mode 100644 index 00000000..d3fabf69 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdatePurchaseOrderEmailAttachment.json @@ -0,0 +1,187 @@ +{ + "name": "UpdatePurchaseOrderEmailAttachment", + "fully_qualified_name": "ZohoBooksApi.UpdatePurchaseOrderEmailAttachment@0.1.0", + "description": "Update email attachment preference for a purchase order.\n\nThis tool updates the preference to include or exclude the attached file when emailing a specific purchase order. It should be called when you need to change whether the attachment is sent via email for a particular purchase order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization for which the purchase order email attachment preference is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "purchase_order_id", + "required": true, + "description": "Unique identifier of the purchase order to update the email attachment preference for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "purchaseorder_id" + }, + { + "name": "include_attachment_with_email", + "required": true, + "description": "Boolean to determine if the attachment should be sent with the purchase order email. Set to true to include the attachment, or false to exclude it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to send the attachment with the purchase order when emailed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "can_send_in_mail" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_purchase_order_attachment'.", + "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": [ + "ZohoBooks.purchaseorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/purchaseorders/{purchaseorder_id}/attachment", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "can_send_in_mail", + "tool_parameter_name": "include_attachment_with_email", + "description": "Boolean to send the attachment with the purchase order when emailed.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to send the attachment with the purchase order when emailed." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "purchaseorder_id", + "tool_parameter_name": "purchase_order_id", + "description": "Unique identifier of the purchase order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the purchase order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringBill.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringBill.json new file mode 100644 index 00000000..dcdc8636 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringBill.json @@ -0,0 +1,1285 @@ +{ + "name": "UpdateRecurringBill", + "fully_qualified_name": "ZohoBooksApi.UpdateRecurringBill@0.1.0", + "description": "Update details of a recurring bill in Zoho Books.\n\nUse this tool to update a recurring bill in Zoho Books. Modify its details including line items by removing them from the list if needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization in Zoho Books. This ID is required to specify the organization whose recurring bill is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_bill_identifier", + "required": true, + "description": "Unique identifier for the recurring bill to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_bill_id" + }, + { + "name": "recurring_bill_details", + "required": false, + "description": "JSON object containing details for updating a recurring bill, such as vendor ID, currency ID, line items, and other relevant fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the bill has to be created." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Status of the Recurring Bill" + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Bill. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring bill. Bills will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring bill has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "is_abn_quoted": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "abn": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Applicable for transactions where you pay reverse charge" + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the price book." + }, + "pricebook_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the price book" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line Item" + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Item" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied to the line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if entity is Billable" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a recurrence bill." + }, + "is_tds_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if TDS is applied" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the Bill" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and Conditions for the Bill" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number Referring to Payment Terms" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the recurrence. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the discount account." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify discount applied in before /after tax." + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for repeat_every" + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for recurrence_frequency" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_recurring_bill'.", + "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": [ + "ZohoBooks.bills.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringbills/{recurring_bill_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_bill_id", + "tool_parameter_name": "recurring_bill_identifier", + "description": "Unique identifier of the recurring bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring bill." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "recurring_bill_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the bill has to be created." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Status of the Recurring Bill" + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Bill. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring bill. Bills will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring bill has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "is_abn_quoted": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "abn": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Applicable for transactions where you pay reverse charge" + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the price book." + }, + "pricebook_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the price book" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line Item" + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Item" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied to the line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if entity is Billable" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a recurrence bill." + }, + "is_tds_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if TDS is applied" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the Bill" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and Conditions for the Bill" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number Referring to Payment Terms" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the recurrence. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the discount account." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify discount applied in before /after tax." + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for repeat_every" + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for recurrence_frequency" + } + }, + "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 \"required\": [\n \"vendor_id\",\n \"recurrence_name\",\n \"start_date\",\n \"repeat_every\",\n \"recurrence_frequency\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"recurring_bill_id\": {\n \"type\": \"string\",\n \"example\": 982000000567240\n },\n \"vendor_id\": {\n \"description\": \"ID of the vendor the bill has to be created.\",\n \"type\": \"string\",\n \"example\": \"460000000038029\"\n },\n \"currency_id\": {\n \"description\": \"ID of the Currency\",\n \"type\": \"string\",\n \"example\": \"460000000000099\"\n },\n \"status\": {\n \"description\": \"Status of the Recurring Bill\",\n \"type\": \"string\",\n \"example\": \"active\"\n },\n \"recurrence_name\": {\n \"description\": \"Name of the Recurring Bill. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Monthly Rental\"\n },\n \"start_date\": {\n \"description\": \"Start date of the recurring bill. Bills will not be generated for dates prior to the current date. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \"2013-11-18\"\n },\n \"end_date\": {\n \"description\": \"Date on which recurring bill has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \"2013-12-18\"\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_reg_no\": {\n \"description\": \"For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_abn_quoted\": {\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"abn\": {\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"Applicable for transactions where you pay reverse charge\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Enter ID of the price book.\",\n \"type\": \"string\",\n \"example\": 460000000038090\n },\n \"pricebook_name\": {\n \"description\": \"Name of the price book\",\n \"type\": \"string\"\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of a recurrence bill.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"description\": \"ID of the Line Item\",\n \"type\": \"string\",\n \"example\": \"460000000067009\"\n },\n \"item_id\": {\n \"description\": \"ID of the Item\",\n \"type\": \"string\",\n \"example\": \"460000000054135\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"account_id\": {\n \"description\": \"ID of the account associated with the line item.\",\n \"type\": \"string\",\n \"example\": \"460000000000403\"\n },\n \"description\": {\n \"description\": \"Description of the line item.\",\n \"type\": \"string\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Reverse charge tax ID\",\n \"type\": \"string\",\n \"example\": 460000000038056,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"quantity\": {\n \"description\": \"Quantity of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied to the line item.\",\n \"type\": \"string\",\n \"example\": \"460000000027005\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tds_tax_id\": {\n \"description\": \"TDS ID of the tax group applied to the line item\",\n \"type\": \"string\",\n \"example\": \"460000000027001\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_order\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"eu\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unit\": {\n \"description\": \"Unit of the Item\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054178\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054180\"\n }\n }\n }\n },\n \"is_billable\": {\n \"description\": \"Check if entity is Billable\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"project_id\": {\n \"description\": \"ID of the Project\",\n \"type\": \"string\"\n },\n \"customer_id\": {\n \"description\": \"ID of the Customer\",\n \"type\": \"string\"\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"serial_numbers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"is_tds_applied\": {\n \"description\": \"Check if TDS is applied\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"in\",\n \"global\",\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"notes\": {\n \"description\": \"Notes for the Bill\",\n \"type\": \"string\",\n \"example\": \"Thanks for your business.\"\n },\n \"terms\": {\n \"description\": \"Terms and Conditions for the Bill\",\n \"type\": \"string\",\n \"example\": \"Terms and conditions apply.\"\n },\n \"payment_terms\": {\n \"description\": \"Number Referring to Payment Terms\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"payment_terms_label\": {\n \"description\": \"Label of the Payment Terms\",\n \"type\": \"string\",\n \"example\": \"Due on Receipt\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"discount\": {\n \"description\": \"Discount applied to the recurrence. It can be either in % or in amount. E.g: 12.5% or 190.\",\n \"type\": \"string\",\n \"example\": \"30%\"\n },\n \"discount_account_id\": {\n \"description\": \"ID of the account associated with the discount account.\",\n \"type\": \"string\",\n \"example\": \"460000000000403\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"To specify discount applied in before /after tax.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"repeat_every\": {\n \"description\": \"Description for repeat_every\",\n \"type\": \"string\",\n \"example\": \"\"\n },\n \"recurrence_frequency\": {\n \"description\": \"Description for recurrence_frequency\",\n \"type\": \"string\",\n \"example\": \"\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringBillCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringBillCustomField.json new file mode 100644 index 00000000..4d98e28b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringBillCustomField.json @@ -0,0 +1,1351 @@ +{ + "name": "UpdateRecurringBillCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateRecurringBillCustomField@0.1.0", + "description": "Update or create a recurring bill using a unique custom field.\n\nThis tool updates a recurring bill by identifying it through a custom field with a unique value. If the unique value does not match any existing recurring bills and the X-Upsert header is true, a new bill will be created if the necessary details are provided.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization associated with the recurring bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "custom_field_unique_identifier_key", + "required": true, + "description": "The API name of the unique custom field used to identify the recurring bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "Unique value of the custom field used to identify the recurring bill.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "recurring_bill_details", + "required": false, + "description": "JSON object containing details for updating or creating a recurring bill, including vendor, currency, line items, and tax information.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the bill has to be created." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Status of the Recurring Bill" + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Bill. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring bill. Bills will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring bill has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "is_abn_quoted": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "abn": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Applicable for transactions where you pay reverse charge" + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the price book." + }, + "pricebook_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the price book" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line Item" + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Item" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied to the line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if entity is Billable" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a recurrence bill." + }, + "is_tds_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if TDS is applied" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the Bill" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and Conditions for the Bill" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number Referring to Payment Terms" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the recurrence. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the discount account." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify discount applied in before /after tax." + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for repeat_every" + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for recurrence_frequency" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "allow_creation_if_missing", + "required": false, + "description": "Set to true to create a new recurring bill if the unique custom field value is not found.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_recurring_bill_using_custom_field'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringbills", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "custom_field_unique_identifier_key", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "allow_creation_if_missing", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "recurring_bill_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor the bill has to be created." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Currency" + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Status of the Recurring Bill" + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Bill. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring bill. Bills will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring bill has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vat_reg_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara." + }, + "is_abn_quoted": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "abn": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Applicable for transactions where you pay reverse charge" + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the price book." + }, + "pricebook_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the price book" + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Line Item" + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Item" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reverse charge tax ID" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group applied to the line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS ID of the tax group applied to the line item" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax Exemption Applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption Applied" + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service." + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the Item" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the Tag Option" + } + }, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if entity is Billable" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Project" + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Customer" + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "Line items of a recurrence bill." + }, + "is_tds_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if TDS is applied" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the Bill" + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Terms and Conditions for the Bill" + }, + "payment_terms": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number Referring to Payment Terms" + }, + "payment_terms_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Payment Terms" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the custom field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": null + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the recurrence. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "discount_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account associated with the discount account." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To specify discount applied in before /after tax." + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for repeat_every" + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for recurrence_frequency" + } + }, + "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 \"required\": [\n \"vendor_id\",\n \"recurrence_name\",\n \"start_date\",\n \"repeat_every\",\n \"recurrence_frequency\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"recurring_bill_id\": {\n \"type\": \"string\",\n \"example\": 982000000567240\n },\n \"vendor_id\": {\n \"description\": \"ID of the vendor the bill has to be created.\",\n \"type\": \"string\",\n \"example\": \"460000000038029\"\n },\n \"currency_id\": {\n \"description\": \"ID of the Currency\",\n \"type\": \"string\",\n \"example\": \"460000000000099\"\n },\n \"status\": {\n \"description\": \"Status of the Recurring Bill\",\n \"type\": \"string\",\n \"example\": \"active\"\n },\n \"recurrence_name\": {\n \"description\": \"Name of the Recurring Bill. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Monthly Rental\"\n },\n \"start_date\": {\n \"description\": \"Start date of the recurring bill. Bills will not be generated for dates prior to the current date. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \"2013-11-18\"\n },\n \"end_date\": {\n \"description\": \"Date on which recurring bill has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \"2013-12-18\"\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_reg_no\": {\n \"description\": \"For UK Edition: VAT Registration number of a contact with length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\",\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_abn_quoted\": {\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"abn\": {\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"Applicable for transactions where you pay reverse charge\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Enter ID of the price book.\",\n \"type\": \"string\",\n \"example\": 460000000038090\n },\n \"pricebook_name\": {\n \"description\": \"Name of the price book\",\n \"type\": \"string\"\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of a recurrence bill.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"description\": \"ID of the Line Item\",\n \"type\": \"string\",\n \"example\": \"460000000067009\"\n },\n \"item_id\": {\n \"description\": \"ID of the Item\",\n \"type\": \"string\",\n \"example\": \"460000000054135\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"account_id\": {\n \"description\": \"ID of the account associated with the line item.\",\n \"type\": \"string\",\n \"example\": \"460000000000403\"\n },\n \"description\": {\n \"description\": \"Description of the line item.\",\n \"type\": \"string\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Reverse charge tax ID\",\n \"type\": \"string\",\n \"example\": 460000000038056,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"quantity\": {\n \"description\": \"Quantity of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group applied to the line item.\",\n \"type\": \"string\",\n \"example\": \"460000000027005\",\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"tds_tax_id\": {\n \"description\": \"TDS ID of the tax group applied to the line item\",\n \"type\": \"string\",\n \"example\": \"460000000027001\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption Applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_order\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"eu\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unit\": {\n \"description\": \"Unit of the Item\",\n \"type\": \"string\",\n \"example\": \"kgs\"\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the Tag\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054178\"\n },\n \"tag_option_id\": {\n \"description\": \"Id of the Tag Option\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000054180\"\n }\n }\n }\n },\n \"is_billable\": {\n \"description\": \"Check if entity is Billable\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"project_id\": {\n \"description\": \"ID of the Project\",\n \"type\": \"string\"\n },\n \"customer_id\": {\n \"description\": \"ID of the Customer\",\n \"type\": \"string\"\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"serial_numbers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"is_tds_applied\": {\n \"description\": \"Check if TDS is applied\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"in\",\n \"global\",\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"notes\": {\n \"description\": \"Notes for the Bill\",\n \"type\": \"string\",\n \"example\": \"Thanks for your business.\"\n },\n \"terms\": {\n \"description\": \"Terms and Conditions for the Bill\",\n \"type\": \"string\",\n \"example\": \"Terms and conditions apply.\"\n },\n \"payment_terms\": {\n \"description\": \"Number Referring to Payment Terms\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"payment_terms_label\": {\n \"description\": \"Label of the Payment Terms\",\n \"type\": \"string\",\n \"example\": \"Due on Receipt\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the custom field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"discount\": {\n \"description\": \"Discount applied to the recurrence. It can be either in % or in amount. E.g: 12.5% or 190.\",\n \"type\": \"string\",\n \"example\": \"30%\"\n },\n \"discount_account_id\": {\n \"description\": \"ID of the account associated with the discount account.\",\n \"type\": \"string\",\n \"example\": \"460000000000403\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"To specify discount applied in before /after tax.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"repeat_every\": {\n \"description\": \"Description for repeat_every\",\n \"type\": \"string\",\n \"example\": \"\"\n },\n \"recurrence_frequency\": {\n \"description\": \"Description for recurrence_frequency\",\n \"type\": \"string\",\n \"example\": \"\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringExpense.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringExpense.json new file mode 100644 index 00000000..bb0c5767 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringExpense.json @@ -0,0 +1,915 @@ +{ + "name": "UpdateRecurringExpense", + "fully_qualified_name": "ZohoBooksApi.UpdateRecurringExpense@0.1.0", + "description": "Update or create a recurring expense using a custom field.\n\nUse this tool to update a recurring expense in Zoho Books by specifying a unique custom field value. If the expense doesn't exist and upsert is enabled, a new expense can be created. This is useful for maintaining accurate financial records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization whose recurring expense is to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_api_name", + "required": true, + "description": "Unique CustomField API Name to identify the recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "Unique value of the CustomField used to identify the recurring expense.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "recurring_expense_details", + "required": false, + "description": "JSON object containing details of the recurring expense, including account ID, recurrence name, start and end dates, line items, and additional fields like tax and currency information.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Expense. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by description. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the code for tax exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the tax exemption" + } + }, + "description": null + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer id." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a recurring-expense." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_new_recurring_if_not_found", + "required": false, + "description": "Set to true to create a new recurring expense if the unique custom field value is not found.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_recurring_expense_using_custom_field'.", + "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": [ + "ZohoBooks.expenses.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringexpenses", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_new_recurring_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "recurring_expense_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Recurring Expense. Max-length [100]" + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd]." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd]." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "repeat_every": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search recurring expenses by description. Max-length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "item_order": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the code for tax exemption" + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter ID of the tax exemption" + } + }, + "description": null + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Recurring Expense amount." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "acquisition_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported." + }, + "reverse_charge_vat_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search expenses by customer id." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a recurring-expense." + } + }, + "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 \"required\": [\n \"account_id\",\n \"recurrence_name\",\n \"start_date\",\n \"recurrence_frequency\",\n \"repeat_every\",\n \"amount\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"account_id\": {\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"recurrence_name\": {\n \"description\": \"Name of the Recurring Expense. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Monthly Rental\"\n },\n \"start_date\": {\n \"description\": \"Start date of the recurring expense. Expenses will not be generated for dates prior to the current date. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \"2016-11-19T00:00:00.000Z\"\n },\n \"end_date\": {\n \"description\": \"Date on which recurring expense has to expire. Can be left as empty to run forever. Format [yyyy-mm-dd].\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"recurrence_frequency\": {\n \"type\": \"string\",\n \"example\": \"months\"\n },\n \"repeat_every\": {\n \"type\": \"string\",\n \"example\": 1\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"AP\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"string\",\n \"example\": 982000000567254,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"line_item_id\": {\n \"type\": \"string\",\n \"example\": 10763000000140068\n },\n \"account_id\": {\n \"type\": \"string\",\n \"example\": 982000000561057\n },\n \"description\": {\n \"description\": \"Search recurring expenses by description. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"amount\": {\n \"description\": \"Recurring Expense amount.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"item_order\": {\n \"type\": \"string\",\n \"example\": 1\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"in\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"Enter reverse charge tax IDFor SouthAfrica edition:(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"string\",\n \"example\": 982000000567254,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Enter the code for tax exemption\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Enter ID of the tax exemption\",\n \"type\": \"string\",\n \"example\": 982000000567267,\n \"x-node_available_in\": [\n \"in\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n },\n \"amount\": {\n \"description\": \"Recurring Expense amount.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 112.5\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment for the expense. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"eu_vat_not_registered\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the recurring expense.Choose whether the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"product_type\": {\n \"description\": \"Type of the expense. This denotes whether the expense is to be treated as a goods or service or capital asset purchase. Allowed Values:
For UK edition:digital_service, goods and service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\",\n \"x-node_available_in\": [\n \"uk\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"acquisition_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is an EU - goods expense and acquisition VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_vat_id\": {\n \"description\": \"This is the ID of the tax applied in case this is a non UK - service expense and reverse charge VAT needs to be reported.\",\n \"type\": \"string\",\n \"example\": \" \",\n \"x-node_available_in\": [\n \"in\",\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_id\": {\n \"type\": \"string\",\n \"example\": 982000000566007\n },\n \"is_inclusive_tax\": {\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_billable\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"customer_id\": {\n \"description\": \"Search expenses by customer id.\",\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"project_id\": {\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"currency_id\": {\n \"type\": \"string\",\n \"example\": 982000000567001\n },\n \"exchange_rate\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for a recurring-expense.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringInvoice.json new file mode 100644 index 00000000..585783e0 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringInvoice.json @@ -0,0 +1,1199 @@ +{ + "name": "UpdateRecurringInvoice", + "fully_qualified_name": "ZohoBooksApi.UpdateRecurringInvoice@0.1.0", + "description": "Update details of a recurring invoice in Zoho Books.\n\nUse this tool to modify an existing recurring invoice in Zoho Books by specifying the invoice ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required for updating a recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_invoice_id", + "required": true, + "description": "Unique identifier of the recurring invoice to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_invoice_id" + }, + { + "name": "recurring_invoice_details", + "required": false, + "description": "JSON object detailing attributes to update for the recurring invoice, such as customer ID, recurrence frequency, line items, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name for the recurring profile given by the user. Max-length [100]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Order number of the Recurring Invoice." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the recurring invoice is raised." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currenct id of the currency" + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice starts." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice expires." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "weeks" + ], + "properties": null, + "inner_properties": null, + "description": "The frequency of time interval at which the invoice is to be generated." + }, + "repeat_every": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The period between every recurrency frequency." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the vat treatment for the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose false for PPU-Single Payments and true for PPD-Installment Payments" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique string generated for the item for which invoice is to be sent." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the line item. max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A small description about the item. Max-length [2000]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item included." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the invoice. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group associated to the recurring invoice." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group items together." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total rate raised by this item. This would be the multiplicative product of item price and quantity." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header" + }, + "header_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item header" + } + }, + "description": "Line items of an invoice." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the customer." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Data type of the custom field." + } + }, + "description": null + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_recurring_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_invoice_id", + "tool_parameter_name": "recurring_invoice_id", + "description": "Unique identifier of the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "recurring_invoice_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name for the recurring profile given by the user. Max-length [100]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Order number of the Recurring Invoice." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the recurring invoice is raised." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currenct id of the currency" + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice starts." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice expires." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "weeks" + ], + "properties": null, + "inner_properties": null, + "description": "The frequency of time interval at which the invoice is to be generated." + }, + "repeat_every": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The period between every recurrency frequency." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the vat treatment for the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose false for PPU-Single Payments and true for PPD-Installment Payments" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique string generated for the item for which invoice is to be sent." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the line item. max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A small description about the item. Max-length [2000]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item included." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the invoice. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group associated to the recurring invoice." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group items together." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total rate raised by this item. This would be the multiplicative product of item price and quantity." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header" + }, + "header_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item header" + } + }, + "description": "Line items of an invoice." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the customer." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Data type of the custom field." + } + }, + "description": null + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + } + }, + "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 \"required\": [\n \"recurrence_name\",\n \"customer_id\",\n \"recurrence_frequency\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"recurrence_name\": {\n \"description\": \"Unique name for the recurring profile given by the user. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"MonthlyInvoice\"\n },\n \"reference_number\": {\n \"description\": \"The Order number of the Recurring Invoice.\",\n \"type\": \"string\",\n \"example\": \"12314\"\n },\n \"customer_id\": {\n \"description\": \"Customer ID of the customer for whom the recurring invoice is raised.\",\n \"type\": \"string\",\n \"example\": \"903000000000099\"\n },\n \"currency_id\": {\n \"description\": \"The currenct id of the currency\",\n \"type\": \"string\",\n \"example\": \"982000000000190\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"start_date\": {\n \"description\": \"The date on which the recurring invoice starts.\",\n \"type\": \"string\",\n \"example\": \"2016-06-12\"\n },\n \"end_date\": {\n \"description\": \"The date on which the recurring invoice expires.\",\n \"type\": \"string\",\n \"example\": \"2017-06-12\"\n },\n \"recurrence_frequency\": {\n \"description\": \"The frequency of time interval at which the invoice is to be generated.\",\n \"type\": \"string\",\n \"enum\": [\n \"weeks\"\n ],\n \"example\": \"weeks\"\n },\n \"repeat_every\": {\n \"description\": \"The period between every recurrency frequency.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"overseas\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"Choose whether the vat treatment for the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_usage\": {\n \"description\": \"Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll.\",\n \"type\": \"string\",\n \"example\": \"acquisition_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"allow_partial_payments\": {\n \"description\": \"Choose false for PPU-Single Payments and true for PPD-Installment Payments\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique string generated for the item for which invoice is to be sent.\",\n \"type\": \"string\",\n \"example\": \"90300000081501\"\n },\n \"name\": {\n \"description\": \"The name of the line item. max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"A small description about the item. Max-length [2000]\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"quantity\": {\n \"description\": \"Quantity of the item included.\",\n \"type\": \"integer\",\n \"format\": \"int32\",\n \"example\": 1\n },\n \"discount\": {\n \"description\": \"Discount applied to the invoice. It can be either in % or in amount. E.g: 12.5% or 190.\",\n \"type\": \"string\",\n \"example\": \"30%\"\n },\n \"tags\": {\n \"description\": \"Filter all your reports based on the tag\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 982000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 982000000002670\n }\n }\n }\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group associated to the recurring invoice.\",\n \"example\": \"903000000000356\"\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax or TDS tax group associated to the recurring invoice.\",\n \"type\": \"string\",\n \"example\": \"903000000000357\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group items together.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_total\": {\n \"description\": \"Total rate raised by this item. This would be the multiplicative product of item price and quantity.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 100\n },\n \"product_type\": {\n \"description\": \"Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"box\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"header_name\": {\n \"description\": \"Name of the item header\",\n \"type\": \"string\",\n \"example\": \"Electronic devices\"\n },\n \"header_id\": {\n \"description\": \"ID of the item header\",\n \"type\": \"string\",\n \"example\": 982000000000670\n }\n }\n }\n },\n \"email\": {\n \"description\": \"Email address of the customer.\",\n \"type\": \"string\",\n \"example\": \"benjamin.george@bowmanfurniture.com\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": \"129890\"\n },\n \"label\": {\n \"description\": \"Label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"label\"\n },\n \"data_type\": {\n \"description\": \"Data type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"text\"\n }\n }\n }\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group associated to the recurring invoice.\",\n \"example\": \"903000000000356\"\n },\n \"tax_authority_id\": {\n \"description\": \"Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"payment_options\": {\n \"type\": \"object\",\n \"properties\": {\n \"payment_gateways\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"configured\": {\n \"description\": \"Boolean check to see if a payment gateway ahs been configured\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"additional_field1\": {\n \"description\": \"Paypal payment method. Allowed Values: standard and adaptive\",\n \"type\": \"string\",\n \"example\": \"standard\"\n },\n \"gateway_name\": {\n \"description\": \"Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree\",\n \"type\": \"string\",\n \"example\": \"paypal\"\n }\n }\n }\n }\n }\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringInvoiceCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringInvoiceCustomField.json new file mode 100644 index 00000000..75815572 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringInvoiceCustomField.json @@ -0,0 +1,1265 @@ +{ + "name": "UpdateRecurringInvoiceCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateRecurringInvoiceCustomField@0.1.0", + "description": "Update or create a recurring invoice using a custom field.\n\nThis tool updates an existing recurring invoice or creates a new one using a custom field's unique value. Use when you need to update invoices based on unique custom identifiers. If the unique key isn't found and the upsert option is true, a new invoice is created.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. This ID is required to update or create a recurring invoice using the custom field.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_api_name", + "required": true, + "description": "The unique API name of the custom field used to identify which recurring invoice to update or create.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "The unique value for the custom field used to identify and update the recurring invoice. This should be a unique string associated with a custom field configured to reject duplicates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "invoice_request_body", + "required": false, + "description": "JSON object containing the recurring invoice details such as customer ID, currency ID, start and end dates, recurrence frequency, line items, and other optional fields for customization.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name for the recurring profile given by the user. Max-length [100]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Order number of the Recurring Invoice." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the recurring invoice is raised." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currenct id of the currency" + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice starts." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice expires." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "weeks" + ], + "properties": null, + "inner_properties": null, + "description": "The frequency of time interval at which the invoice is to be generated." + }, + "repeat_every": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The period between every recurrency frequency." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the vat treatment for the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose false for PPU-Single Payments and true for PPD-Installment Payments" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique string generated for the item for which invoice is to be sent." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the line item. max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A small description about the item. Max-length [2000]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item included." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the invoice. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group associated to the recurring invoice." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group items together." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total rate raised by this item. This would be the multiplicative product of item price and quantity." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header" + }, + "header_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item header" + } + }, + "description": "Line items of an invoice." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the customer." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Data type of the custom field." + } + }, + "description": null + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "enable_upsert", + "required": false, + "description": "Set to true to create a new invoice if no existing invoice matches the unique identifier. Set to false to update only without creating a new invoice.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_recurring_invoice_using_custom_field'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "enable_upsert", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurrence_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name for the recurring profile given by the user. Max-length [100]" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Order number of the Recurring Invoice." + }, + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Customer ID of the customer for whom the recurring invoice is raised." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The currenct id of the currency" + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "start_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice starts." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the recurring invoice expires." + }, + "recurrence_frequency": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "weeks" + ], + "properties": null, + "inner_properties": null, + "description": "The frequency of time interval at which the invoice is to be generated." + }, + "repeat_every": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The period between every recurrency frequency." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the vat treatment for the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "cfdi_usage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll." + }, + "allow_partial_payments": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose false for PPU-Single Payments and true for PPD-Installment Payments" + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique string generated for the item for which invoice is to be sent." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the line item. max-length [100]" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A small description about the item. Max-length [2000]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "quantity": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item included." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount applied to the invoice. It can be either in % or in amount. E.g: 12.5% or 190." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group associated to the recurring invoice." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group items together." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_total": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total rate raised by this item. This would be the multiplicative product of item price and quantity." + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add HSN/SAC code for your goods/services" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "header_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item header" + }, + "header_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item header" + } + }, + "description": "Line items of an invoice." + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Email address of the customer." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the custom field." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the custom field." + }, + "data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Data type of the custom field." + } + }, + "description": null + }, + "tax_id": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax or tax group associated to the recurring invoice." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "payment_options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payment_gateways": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "configured": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean check to see if a payment gateway ahs been configured" + }, + "additional_field1": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Paypal payment method. Allowed Values: standard and adaptive" + }, + "gateway_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": null + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the tax exemption." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer. Max-length [25]" + } + }, + "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 \"required\": [\n \"recurrence_name\",\n \"customer_id\",\n \"recurrence_frequency\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"recurrence_name\": {\n \"description\": \"Unique name for the recurring profile given by the user. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"MonthlyInvoice\"\n },\n \"reference_number\": {\n \"description\": \"The Order number of the Recurring Invoice.\",\n \"type\": \"string\",\n \"example\": \"12314\"\n },\n \"customer_id\": {\n \"description\": \"Customer ID of the customer for whom the recurring invoice is raised.\",\n \"type\": \"string\",\n \"example\": \"903000000000099\"\n },\n \"currency_id\": {\n \"description\": \"The currenct id of the currency\",\n \"type\": \"string\",\n \"example\": \"982000000000190\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"start_date\": {\n \"description\": \"The date on which the recurring invoice starts.\",\n \"type\": \"string\",\n \"example\": \"2016-06-12\"\n },\n \"end_date\": {\n \"description\": \"The date on which the recurring invoice expires.\",\n \"type\": \"string\",\n \"example\": \"2017-06-12\"\n },\n \"recurrence_frequency\": {\n \"description\": \"The frequency of time interval at which the invoice is to be generated.\",\n \"type\": \"string\",\n \"enum\": [\n \"weeks\"\n ],\n \"example\": \"weeks\"\n },\n \"repeat_every\": {\n \"description\": \"The period between every recurrency frequency.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the invoices. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and selling Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"example\": \"overseas\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"Choose whether the vat treatment for the contact falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"cfdi_usage\": {\n \"description\": \"Choose CFDI Usage.
Allowed values: acquisition_of_merchandise, return_discount_bonus, general_expense, buildings, furniture_office_equipment, transport_equipment, computer_equipmentdye_molds_tools, telephone_communication, satellite_communication, other_machinery_equipment, hospital_expense, medical_expense_disability, funeral_expense, donation, interest_mortage_loans, contribution_sar, medical_expense_insurance_pormium, school_transportation_expense, deposit_saving_account, payment_educational_service, no_tax_effect, payment, payroll.\",\n \"type\": \"string\",\n \"example\": \"acquisition_of_merchandise\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"allow_partial_payments\": {\n \"description\": \"Choose false for PPU-Single Payments and true for PPD-Installment Payments\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of an invoice.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique string generated for the item for which invoice is to be sent.\",\n \"type\": \"string\",\n \"example\": \"90300000081501\"\n },\n \"name\": {\n \"description\": \"The name of the line item. max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"A small description about the item. Max-length [2000]\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n },\n \"quantity\": {\n \"description\": \"Quantity of the item included.\",\n \"type\": \"integer\",\n \"format\": \"int32\",\n \"example\": 1\n },\n \"discount\": {\n \"description\": \"Discount applied to the invoice. It can be either in % or in amount. E.g: 12.5% or 190.\",\n \"type\": \"string\",\n \"example\": \"30%\"\n },\n \"tags\": {\n \"description\": \"Filter all your reports based on the tag\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 982000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 982000000002670\n }\n }\n }\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group associated to the recurring invoice.\",\n \"example\": \"903000000000356\"\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax or TDS tax group associated to the recurring invoice.\",\n \"type\": \"string\",\n \"example\": \"903000000000357\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group items together.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_total\": {\n \"description\": \"Total rate raised by this item. This would be the multiplicative product of item price and quantity.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 100\n },\n \"product_type\": {\n \"description\": \"Enter goods or services .
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"hsn_or_sac\": {\n \"description\": \"Add HSN/SAC code for your goods/services\",\n \"type\": \"string\",\n \"example\": 80540,\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": 71121206,\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add SAT Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"example\": \"box\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"header_name\": {\n \"description\": \"Name of the item header\",\n \"type\": \"string\",\n \"example\": \"Electronic devices\"\n },\n \"header_id\": {\n \"description\": \"ID of the item header\",\n \"type\": \"string\",\n \"example\": 982000000000670\n }\n }\n }\n },\n \"email\": {\n \"description\": \"Email address of the customer.\",\n \"type\": \"string\",\n \"example\": \"benjamin.george@bowmanfurniture.com\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"description\": \"Value of the custom field.\",\n \"type\": \"string\",\n \"example\": \"129890\"\n },\n \"label\": {\n \"description\": \"Label of the custom field.\",\n \"type\": \"string\",\n \"example\": \"label\"\n },\n \"data_type\": {\n \"description\": \"Data type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"text\"\n }\n }\n }\n },\n \"tax_id\": {\n \"description\": \"ID of the tax or tax group associated to the recurring invoice.\",\n \"example\": \"903000000000356\"\n },\n \"tax_authority_id\": {\n \"description\": \"Unique ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"payment_options\": {\n \"type\": \"object\",\n \"properties\": {\n \"payment_gateways\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"configured\": {\n \"description\": \"Boolean check to see if a payment gateway ahs been configured\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"additional_field1\": {\n \"description\": \"Paypal payment method. Allowed Values: standard and adaptive\",\n \"type\": \"string\",\n \"example\": \"standard\"\n },\n \"gateway_name\": {\n \"description\": \"Name of the payment gateway associated with the invoice. E.g. paypal, stripe.Allowed Values: paypal, authorize_net, payflow_pro, stripe, 2checkout and braintree\",\n \"type\": \"string\",\n \"example\": \"paypal\"\n }\n }\n }\n }\n }\n },\n \"tax_exemption_id\": {\n \"description\": \"Unique ID of the tax exemption.\",\n \"type\": \"string\",\n \"example\": \"903000006345\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer. Max-length [25]\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringInvoiceTemplate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringInvoiceTemplate.json new file mode 100644 index 00000000..9198a699 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRecurringInvoiceTemplate.json @@ -0,0 +1,254 @@ +{ + "name": "UpdateRecurringInvoiceTemplate", + "fully_qualified_name": "ZohoBooksApi.UpdateRecurringInvoiceTemplate@0.1.0", + "description": "Update the PDF template for a recurring invoice.\n\nThis tool updates the PDF template associated with a specific recurring invoice in Zoho Books. It is used when you need to change the template for invoices that are generated on a recurring basis.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier of the organization. This ID is used to specify which organization's recurring invoice template will be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "recurring_invoice_identifier", + "required": true, + "description": "Unique identifier of the recurring invoice to update the PDF template for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "recurring_invoice_id" + }, + { + "name": "invoice_template_id", + "required": true, + "description": "Unique identifier of the recurring invoice template to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + }, + { + "name": "invoice_template_details", + "required": false, + "description": "JSON object containing 'recurring_invoice_id' and 'template_id' for updating the invoice template.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice generated by the server." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice template." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_recurring_invoice_template'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/recurringinvoices/{recurring_invoice_id}/templates/{template_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "recurring_invoice_id", + "tool_parameter_name": "recurring_invoice_identifier", + "description": "Unique identifier of the recurring invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "template_id", + "tool_parameter_name": "invoice_template_id", + "description": "Unique identifier of the recurring invoice template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the recurring invoice template." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_template_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "recurring_invoice_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice generated by the server." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the recurring invoice template." + } + }, + "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 \"recurring_invoice_id\": {\n \"description\": \"Unique ID of the recurring invoice generated by the server.\",\n \"type\": \"string\",\n \"example\": \"90300000072369\"\n },\n \"template_id\": {\n \"description\": \"Unique ID of the recurring invoice template.\",\n \"type\": \"string\",\n \"example\": \"90300043563547\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRefundTransaction.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRefundTransaction.json new file mode 100644 index 00000000..64c4a0ab --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRefundTransaction.json @@ -0,0 +1,350 @@ +{ + "name": "UpdateRefundTransaction", + "fully_qualified_name": "ZohoBooksApi.UpdateRefundTransaction@0.1.0", + "description": "Update the refunded transaction details.\n\nUse this tool to update the details of a refunded transaction associated with a specific credit note. This is helpful when corrections or updates are needed for bookkeeping or record maintenance.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization. Required to identify which organization's records are being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "credit_note_identifier", + "required": true, + "description": "Unique identifier of the credit note to update the refund transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_id" + }, + { + "name": "credit_note_refund_id", + "required": true, + "description": "Provide the unique identifier of the credit note refund to update its transaction details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "creditnote_refund_id" + }, + { + "name": "refund_transaction_details", + "required": false, + "description": "A JSON object containing details like date, refund mode, payment form, reference number, amount, exchange rate, from account ID, and description for the refunded transaction. Ensure the date is in yyyy-mm-dd format.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The method of refund." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account from which credit note is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_credit_note_refund'.", + "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": [ + "ZohoBooks.creditnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/creditnotes/{creditnote_id}/refunds/{creditnote_refund_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_id", + "tool_parameter_name": "credit_note_identifier", + "description": "Unique identifier of the credit note.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "creditnote_refund_id", + "tool_parameter_name": "credit_note_refund_id", + "description": "Unique identifier of the credit note refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the credit note refund." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "refund_transaction_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The method of refund." + }, + "payment_form": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount paid for the invoice." + }, + "exchange_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "from_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account from which credit note is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document." + } + }, + "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 \"date\": {\n \"description\": \"The date on which the credit note is raised. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations.\",\n \"type\": \"string\",\n \"example\": \"2016-06-05\"\n },\n \"refund_mode\": {\n \"description\": \"The method of refund.\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"payment_form\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"cash\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reference_number\": {\n \"description\": \"Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]\",\n \"type\": \"string\",\n \"example\": \"INV-384\"\n },\n \"amount\": {\n \"description\": \"Amount paid for the invoice.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 450\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for converting the credit note currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs.\",\n \"type\": \"string\",\n \"example\": \"5.5\"\n },\n \"from_account_id\": {\n \"description\": \"The account from which credit note is refunded.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the credit note document.\",\n \"type\": \"string\",\n \"example\": \"prorated amount for items\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRetainerInvoiceComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRetainerInvoiceComment.json new file mode 100644 index 00000000..8ca756ad --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateRetainerInvoiceComment.json @@ -0,0 +1,254 @@ +{ + "name": "UpdateRetainerInvoiceComment", + "fully_qualified_name": "ZohoBooksApi.UpdateRetainerInvoiceComment@0.1.0", + "description": "Update a comment on a retainer invoice.\n\nUse this tool to update an existing comment of a retainer invoice by specifying the invoice and comment IDs.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization to which the retainer invoice belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier of the retainer invoice to update the comment for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + }, + { + "name": "comment_identifier", + "required": true, + "description": "The unique identifier of the comment to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + }, + { + "name": "invoice_comment_update_details", + "required": false, + "description": "JSON object with 'description' (string) for the comment text and 'show_comment_to_clients' (boolean) to specify visibility.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The comment on a retainer invoice" + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to check if the comment to be shown to the clients" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_retainer_invoice_comment'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/comments/{comment_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_identifier", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "invoice_comment_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The comment on a retainer invoice" + }, + "show_comment_to_clients": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to check if the comment to be shown to the clients" + } + }, + "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 \"description\": {\n \"description\": \"The comment on a retainer invoice\",\n \"type\": \"string\"\n },\n \"show_comment_to_clients\": {\n \"description\": \"Boolean to check if the comment to be shown to the clients\",\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderBillingAddress.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderBillingAddress.json new file mode 100644 index 00000000..e44d4cef --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderBillingAddress.json @@ -0,0 +1,365 @@ +{ + "name": "UpdateSalesOrderBillingAddress", + "fully_qualified_name": "ZohoBooksApi.UpdateSalesOrderBillingAddress@0.1.0", + "description": "Updates the billing address for a specific sales order.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization associated with the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_identifier", + "required": true, + "description": "Unique identifier of the sales order to update the billing address for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "billing_address_details", + "required": false, + "description": "JSON object containing the billing address details such as address, city, state, zip, country, phone, fax, attention, and flags like is_one_off_address, is_update_customer, is_verified.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the address" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the Address" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP Code of the Address" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the Address" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Phone Number of the Contact Person." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax Number" + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_one_off_address": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "is_verified": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Address is verified" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_sales_order_billing_address'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/address/billing", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_identifier", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "billing_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the address" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the Address" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP Code of the Address" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the Address" + }, + "phone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Phone Number of the Contact Person." + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax Number" + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_one_off_address": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "is_verified": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Address is verified" + } + }, + "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 \"address\": {\n \"description\": \"Address\",\n \"type\": \"string\",\n \"example\": \"B-1104, 11F, \\nHorizon International Tower, \\nNo. 6, ZhiChun Road, HaiDian District\"\n },\n \"city\": {\n \"description\": \"City of the address\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"state\": {\n \"description\": \"State of the Address\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"zip\": {\n \"description\": \"ZIP Code of the Address\",\n \"type\": \"string\",\n \"example\": \"1000881\"\n },\n \"country\": {\n \"description\": \"Country of the Address\",\n \"type\": \"string\",\n \"example\": \"China\"\n },\n \"phone\": {\n \"description\": \"Phone Number of the Contact Person.\",\n \"type\": \"string\",\n \"example\": \"+1-925-921-9201\"\n },\n \"fax\": {\n \"description\": \"Fax Number\",\n \"type\": \"string\",\n \"example\": \"+86-10-82637827\"\n },\n \"attention\": {\n \"type\": \"string\"\n },\n \"is_one_off_address\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_update_customer\": {\n \"description\": \"Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_verified\": {\n \"description\": \"Check if the Address is verified\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderComment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderComment.json new file mode 100644 index 00000000..3ef7293a --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderComment.json @@ -0,0 +1,238 @@ +{ + "name": "UpdateSalesOrderComment", + "fully_qualified_name": "ZohoBooksApi.UpdateSalesOrderComment@0.1.0", + "description": "Update an existing comment on a sales order.\n\n", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "comment_id", + "required": true, + "description": "Unique identifier of the comment associated with the sales order that needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "comment_id" + }, + { + "name": "comment_description", + "required": false, + "description": "The new text for the comment on the sales order.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_sales_order_comment'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/comments/{comment_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "comment_id", + "tool_parameter_name": "comment_id", + "description": "Unique identifier of the comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the comment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "comment_description", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the comment." + } + }, + "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 \"description\": {\n \"description\": \"The description of the comment.\",\n \"type\": \"string\",\n \"example\": \"This is a comment.\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderCustomFields.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderCustomFields.json new file mode 100644 index 00000000..01924fa2 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderCustomFields.json @@ -0,0 +1,253 @@ +{ + "name": "UpdateSalesOrderCustomFields", + "fully_qualified_name": "ZohoBooksApi.UpdateSalesOrderCustomFields@0.1.0", + "description": "Update custom fields in existing sales orders efficiently.\n\nCall this tool to update the value of custom fields in existing sales orders when you need to modify order details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization associated with the sales order. This is required to identify which organization's sales order needs updating.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier for the sales order to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "custom_fields_update_payload", + "required": false, + "description": "An array of JSON objects, each containing 'customfield_id', 'index', 'value', and 'label'. Use to update specific custom fields in the sales order.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_salesorder_customfields'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorder/{salesorder_id}/customfields", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "custom_fields_update_payload", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": 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 \"description\": \"Custom fields for a sales order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000639129\"\n },\n \"index\": {\n \"type\": \"integer\",\n \"example\": 1\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n },\n \"label\": {\n \"type\": \"string\",\n \"example\": \"Priority\"\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderInZohoBooks.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderInZohoBooks.json new file mode 100644 index 00000000..a6f49182 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderInZohoBooks.json @@ -0,0 +1,1597 @@ +{ + "name": "UpdateSalesOrderInZohoBooks", + "fully_qualified_name": "ZohoBooksApi.UpdateSalesOrderInZohoBooks@0.1.0", + "description": "Update details of an existing sales order in Zoho Books.\n\nUse this tool to update the details of an existing sales order in Zoho Books. It also allows for the deletion of line items by omitting them from the update request.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to which the sales order belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier of the sales order to update in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "total_number_of_files", + "required": false, + "description": "Specify the total number of files to be attached to the sales order update.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "inferrable": true, + "http_endpoint_parameter_name": "totalFiles" + }, + { + "name": "attach_document", + "required": false, + "description": "A document to be attached to the sales order. Provide the file path or URL as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "inferrable": true, + "http_endpoint_parameter_name": "doc" + }, + { + "name": "sales_order_request_body", + "required": false, + "description": "A JSON object containing all necessary details to update the sales order in Zoho Books. This includes customer IDs, currency information, contact persons, dates, line items, addresses, tax details, discounts, and other specific sales order attributes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer receiving the sales order. This ID links the order to a specific customer account and determines billing information, payment terms, pricing rules, and tax calculations based on customer settings. Can be fetched from the Get Contacts API or retrieved from existing customer records in your organization." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the sales order transaction. Determines pricing display, exchange rate calculations, and affects financial reporting. If not specified, the organization default currency will be used automatically. Can be fetched from the Get Currencies API or retrieved from your organization currency settings." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the sales order was created in YYYY-MM-DD format. This date affects order processing timelines, delivery schedules, payment terms calculation, and appears on customer-facing documents and internal reports." + }, + "shipment_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected or actual date when goods will be shipped to the customer in YYYY-MM-DD format. Used for delivery planning, customer communication, inventory management, and tracking order fulfillment timelines." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "salesperson_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the salesperson responsible for this sales order. Links the order to a specific sales representative customer relationship management, and sales reporting purposes." + }, + "merchant_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the merchant" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group applied" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item e.g. kgs, Nos." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order items." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + } + }, + "description": "Line items of a sales order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form text field containing additional information, instructions, or comments related to the sales order. This field supports internal documentation, customer-specific requirements, special handling instructions, and inter-departmental communication for order processing workflows." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contractual terms and conditions governing the sales order transaction. Defines payment obligations, delivery specifications, warranty provisions, liability limitations, and other legal stipulations that establish the binding agreement between the organization and customer for this specific transaction." + }, + "billing_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer billing address entity. Determines the address used for invoice generation, payment processing, tax jurisdiction calculations, and financial record-keeping. Must correspond to a valid address record associated with the specified customer account." + }, + "shipping_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer shipping address entity. Specifies the delivery destination for goods fulfillment, logistics planning, shipping cost calculations, and delivery confirmation processes. Must correspond to a valid address record within the customer address registry." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "crm_custom_reference_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the sales order. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the sales order.Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "salesorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique alphanumeric identifier for the sales order entity. Required when automatic numbering is disabled in organization settings. Must be unique within the organization and follows the configured numbering sequence pattern for sales order identification and tracking." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference identifier for cross-referencing with customer purchase orders, internal tracking systems, or third-party applications. Used for order reconciliation, customer communication, and integration with external business systems and workflows." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency conversion rate from the transaction currency to the organization base currency. Required for multi-currency transactions to ensure accurate financial reporting, profit calculations, and tax computations in the base currency denomination." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Full name of the sales representative assigned to this sales order. Automatically populated when salesperson_id is specified." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Notes for the Sales Order" + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Terms of the Sales Order" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Authority's name." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "shipping_charge": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional cost associated with product delivery and logistics services. Applied to the sales order total and affects final pricing calculations, profit margins, and customer billing. Supports decimal precision for accurate cost allocation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Manual modification amount applied to the sales order total for rounding corrections, special pricing arrangements, or other business-specific adjustments. Supports positive and negative values for additions or deductions from the order total." + }, + "delivery_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specification of the transportation and delivery mechanism for order fulfillment. Determines shipping costs, delivery timelines, carrier selection, and customer communication regarding order status and tracking information." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag determining the sequence of discount application in tax calculations. When true, discount is applied before tax computation; when false, discount is applied after tax calculation. Affects final pricing accuracy and tax compliance reporting." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Classification of discount application scope within the sales order. entity_level applies discount to the entire order total, while item_level applies discount to individual line items. Determines discount calculation methodology and affects pricing structure." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Textual explanation for the adjustment amount applied to the sales order. Provides audit trail documentation, justification for pricing modifications, and contextual information for financial reporting and compliance verification purposes." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricing structure applied to the sales order. Determines item rates, discount rules, and pricing policies based on customer segments, volume tiers, or promotional campaigns. Can be retrieved from the Pricebooks API." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the PDF document template used for sales order presentation. Determines document layout, branding elements, formatting specifications, and visual presentation standards for customer-facing documents and printed materials." + }, + "documents": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "zcrm_potential_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking the sales order to a Zoho CRM potential record." + }, + "zcrm_potential_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Descriptive name of the Zoho CRM potential record associated with this sales order." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "ignore_auto_number_generation", + "required": false, + "description": "Set to TRUE to ignore auto-generation of the sales order number. This requires manually entering the number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto sales order number generation for this sales order. This mandates the sales order number." + }, + "inferrable": true, + "http_endpoint_parameter_name": "ignore_auto_number_generation" + }, + { + "name": "allow_email_sending", + "required": false, + "description": "Determine if the updated sales order can be sent via email.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Can the file be sent in mail." + }, + "inferrable": true, + "http_endpoint_parameter_name": "can_send_in_mail" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_sales_order'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "ignore_auto_number_generation", + "tool_parameter_name": "ignore_auto_number_generation", + "description": "Ignore auto sales order number generation for this sales order. This mandates the sales order number.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ignore auto sales order number generation for this sales order. This mandates the sales order number." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "can_send_in_mail", + "tool_parameter_name": "allow_email_sending", + "description": "Can the file be sent in mail.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Can the file be sent in mail." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "totalFiles", + "tool_parameter_name": "total_number_of_files", + "description": "Total number of files.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total number of files." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "doc", + "tool_parameter_name": "attach_document", + "description": "Document that is to be attached", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Document that is to be attached" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "sales_order_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer receiving the sales order. This ID links the order to a specific customer account and determines billing information, payment terms, pricing rules, and tax calculations based on customer settings. Can be fetched from the Get Contacts API or retrieved from existing customer records in your organization." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the sales order transaction. Determines pricing display, exchange rate calculations, and affects financial reporting. If not specified, the organization default currency will be used automatically. Can be fetched from the Get Currencies API or retrieved from your organization currency settings." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the sales order was created in YYYY-MM-DD format. This date affects order processing timelines, delivery schedules, payment terms calculation, and appears on customer-facing documents and internal reports." + }, + "shipment_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected or actual date when goods will be shipped to the customer in YYYY-MM-DD format. Used for delivery planning, customer communication, inventory management, and tracking order fulfillment timelines." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "salesperson_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the salesperson responsible for this sales order. Links the order to a specific sales representative customer relationship management, and sales reporting purposes." + }, + "merchant_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the merchant" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group applied" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item e.g. kgs, Nos." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order items." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + } + }, + "description": "Line items of a sales order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form text field containing additional information, instructions, or comments related to the sales order. This field supports internal documentation, customer-specific requirements, special handling instructions, and inter-departmental communication for order processing workflows." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contractual terms and conditions governing the sales order transaction. Defines payment obligations, delivery specifications, warranty provisions, liability limitations, and other legal stipulations that establish the binding agreement between the organization and customer for this specific transaction." + }, + "billing_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer billing address entity. Determines the address used for invoice generation, payment processing, tax jurisdiction calculations, and financial record-keeping. Must correspond to a valid address record associated with the specified customer account." + }, + "shipping_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer shipping address entity. Specifies the delivery destination for goods fulfillment, logistics planning, shipping cost calculations, and delivery confirmation processes. Must correspond to a valid address record within the customer address registry." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "crm_custom_reference_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the sales order. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the sales order.Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "salesorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique alphanumeric identifier for the sales order entity. Required when automatic numbering is disabled in organization settings. Must be unique within the organization and follows the configured numbering sequence pattern for sales order identification and tracking." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference identifier for cross-referencing with customer purchase orders, internal tracking systems, or third-party applications. Used for order reconciliation, customer communication, and integration with external business systems and workflows." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency conversion rate from the transaction currency to the organization base currency. Required for multi-currency transactions to ensure accurate financial reporting, profit calculations, and tax computations in the base currency denomination." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Full name of the sales representative assigned to this sales order. Automatically populated when salesperson_id is specified." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Notes for the Sales Order" + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Terms of the Sales Order" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Authority's name." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "shipping_charge": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional cost associated with product delivery and logistics services. Applied to the sales order total and affects final pricing calculations, profit margins, and customer billing. Supports decimal precision for accurate cost allocation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Manual modification amount applied to the sales order total for rounding corrections, special pricing arrangements, or other business-specific adjustments. Supports positive and negative values for additions or deductions from the order total." + }, + "delivery_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specification of the transportation and delivery mechanism for order fulfillment. Determines shipping costs, delivery timelines, carrier selection, and customer communication regarding order status and tracking information." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag determining the sequence of discount application in tax calculations. When true, discount is applied before tax computation; when false, discount is applied after tax calculation. Affects final pricing accuracy and tax compliance reporting." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Classification of discount application scope within the sales order. entity_level applies discount to the entire order total, while item_level applies discount to individual line items. Determines discount calculation methodology and affects pricing structure." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Textual explanation for the adjustment amount applied to the sales order. Provides audit trail documentation, justification for pricing modifications, and contextual information for financial reporting and compliance verification purposes." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricing structure applied to the sales order. Determines item rates, discount rules, and pricing policies based on customer segments, volume tiers, or promotional campaigns. Can be retrieved from the Pricebooks API." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the PDF document template used for sales order presentation. Determines document layout, branding elements, formatting specifications, and visual presentation standards for customer-facing documents and printed materials." + }, + "documents": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "zcrm_potential_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking the sales order to a Zoho CRM potential record." + }, + "zcrm_potential_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Descriptive name of the Zoho CRM potential record associated with this sales order." + } + }, + "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 \"required\": [\n \"customer_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier for the customer receiving the sales order. This ID links the order to a specific customer account and determines billing information, payment terms, pricing rules, and tax calculations based on customer settings. Can be fetched from the Get Contacts API or retrieved from existing customer records in your organization.\",\n \"type\": \"string\",\n \"example\": \"460000000017138\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the sales order transaction. Determines pricing display, exchange rate calculations, and affects financial reporting. If not specified, the organization default currency will be used automatically. Can be fetched from the Get Currencies API or retrieved from your organization currency settings.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"date\": {\n \"description\": \"Date when the sales order was created in YYYY-MM-DD format. This date affects order processing timelines, delivery schedules, payment terms calculation, and appears on customer-facing documents and internal reports.\",\n \"type\": \"string\",\n \"example\": \"2014-07-28\"\n },\n \"shipment_date\": {\n \"description\": \"Expected or actual date when goods will be shipped to the customer in YYYY-MM-DD format. Used for delivery planning, customer communication, inventory management, and tracking order fulfillment timelines.\",\n \"type\": \"string\"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for a sales order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000639129\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"salesperson_id\": {\n \"description\": \"Unique identifier for the salesperson responsible for this sales order. Links the order to a specific sales representative customer relationship management, and sales reporting purposes.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"merchant_id\": {\n \"description\": \"ID of the merchant\",\n \"type\": \"string\",\n \"example\": \"460000000000597\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of a sales order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_order\": {\n \"type\": \"integer\",\n \"example\": 0\n },\n \"line_item_id\": {\n \"description\": \"ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created.\",\n \"type\": \"string\",\n \"example\": \"460000000039131\"\n },\n \"item_id\": {\n \"description\": \"ID of the item.\",\n \"type\": \"string\",\n \"example\": \"460000000017088\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"name\": {\n \"description\": \"Name of the line item.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Description of the line item.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"quantity\": {\n \"description\": \"Quantity of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 40\n },\n \"discount\": {\n \"description\": \"Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \\\"12.5%\\\") or amount (e.g., \\\"190\\\").\",\n \"type\": \"string\"\n },\n \"tax_id\": {\n \"description\": \"Tax ID for the Sales Order.\",\n \"type\": \"string\",\n \"example\": \"460000000017094\"\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax or TDS tax group applied\",\n \"type\": \"string\",\n \"example\": \"460000000017098\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tags\": {\n \"description\": \"Filter all your reports based on the tag\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 462000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 462000000002670\n }\n }\n }\n },\n \"unit\": {\n \"description\": \"Unit of the line item e.g. kgs, Nos.\",\n \"type\": \"string\",\n \"example\": \"Nos\"\n },\n \"item_custom_fields\": {\n \"description\": \"Custom fields for a sales order items.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000639129\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of Tax Exemption that is applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Free-form text field containing additional information, instructions, or comments related to the sales order. This field supports internal documentation, customer-specific requirements, special handling instructions, and inter-departmental communication for order processing workflows.\",\n \"type\": \"string\"\n },\n \"terms\": {\n \"description\": \"Contractual terms and conditions governing the sales order transaction. Defines payment obligations, delivery specifications, warranty provisions, liability limitations, and other legal stipulations that establish the binding agreement between the organization and customer for this specific transaction.\",\n \"type\": \"string\"\n },\n \"billing_address_id\": {\n \"description\": \"Unique identifier referencing the customer billing address entity. Determines the address used for invoice generation, payment processing, tax jurisdiction calculations, and financial record-keeping. Must correspond to a valid address record associated with the specified customer account.\",\n \"type\": \"string\",\n \"example\": 460000000032174\n },\n \"shipping_address_id\": {\n \"description\": \"Unique identifier referencing the customer shipping address entity. Specifies the delivery destination for goods fulfillment, logistics planning, shipping cost calculations, and delivery confirmation processes. Must correspond to a valid address record within the customer address registry.\",\n \"type\": \"string\"\n },\n \"crm_owner_id\": {\n \"type\": \"string\"\n },\n \"crm_custom_reference_id\": {\n \"type\": \"string\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the sales order. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the sales order.Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"salesorder_number\": {\n \"description\": \"Unique alphanumeric identifier for the sales order entity. Required when automatic numbering is disabled in organization settings. Must be unique within the organization and follows the configured numbering sequence pattern for sales order identification and tracking.\",\n \"type\": \"string\",\n \"example\": \"SO-00001\"\n },\n \"reference_number\": {\n \"description\": \"External reference identifier for cross-referencing with customer purchase orders, internal tracking systems, or third-party applications. Used for order reconciliation, customer communication, and integration with external business systems and workflows.\",\n \"type\": \"string\",\n \"example\": \"REF-001\"\n },\n \"is_update_customer\": {\n \"description\": \"Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"discount\": {\n \"description\": \"Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \\\"12.5%\\\") or amount (e.g., \\\"190\\\").\",\n \"type\": \"string\"\n },\n \"exchange_rate\": {\n \"description\": \"Currency conversion rate from the transaction currency to the organization base currency. Required for multi-currency transactions to ensure accurate financial reporting, profit calculations, and tax computations in the base currency denomination.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1.233\n },\n \"salesperson_name\": {\n \"description\": \"Full name of the sales representative assigned to this sales order. Automatically populated when salesperson_id is specified.\",\n \"type\": \"string\",\n \"example\": \"John Roberts\"\n },\n \"notes_default\": {\n \"description\": \"Default Notes for the Sales Order\",\n \"type\": \"string\"\n },\n \"terms_default\": {\n \"description\": \"Default Terms of the Sales Order\",\n \"type\": \"string\"\n },\n \"tax_id\": {\n \"description\": \"Tax ID for the Sales Order.\",\n \"type\": \"string\",\n \"example\": \"460000000017094\"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Tax Authority's name.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of Tax Exemption that is applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"shipping_charge\": {\n \"description\": \"Additional cost associated with product delivery and logistics services. Applied to the sales order total and affects final pricing calculations, profit margins, and customer billing. Supports decimal precision for accurate cost allocation.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2\n },\n \"adjustment\": {\n \"description\": \"Manual modification amount applied to the sales order total for rounding corrections, special pricing arrangements, or other business-specific adjustments. Supports positive and negative values for additions or deductions from the order total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0.2\n },\n \"delivery_method\": {\n \"description\": \"Specification of the transportation and delivery mechanism for order fulfillment. Determines shipping costs, delivery timelines, carrier selection, and customer communication regarding order status and tracking information.\",\n \"type\": \"string\",\n \"example\": \"Air\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"Boolean flag determining the sequence of discount application in tax calculations. When true, discount is applied before tax computation; when false, discount is applied after tax calculation. Affects final pricing accuracy and tax compliance reporting.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"Classification of discount application scope within the sales order. entity_level applies discount to the entire order total, while item_level applies discount to individual line items. Determines discount calculation methodology and affects pricing structure.\",\n \"type\": \"string\",\n \"example\": \"entity_level\"\n },\n \"adjustment_description\": {\n \"description\": \"Textual explanation for the adjustment amount applied to the sales order. Provides audit trail documentation, justification for pricing modifications, and contextual information for financial reporting and compliance verification purposes.\",\n \"type\": \"string\",\n \"example\": \"Adjustment\"\n },\n \"pricebook_id\": {\n \"description\": \"Unique identifier for the pricing structure applied to the sales order. Determines item rates, discount rules, and pricing policies based on customer segments, volume tiers, or promotional campaigns. Can be retrieved from the Pricebooks API.\",\n \"type\": \"string\"\n },\n \"template_id\": {\n \"description\": \"Unique identifier for the PDF document template used for sales order presentation. Determines document layout, branding elements, formatting specifications, and visual presentation standards for customer-facing documents and printed materials.\",\n \"type\": \"string\",\n \"example\": \"460000000021001\"\n },\n \"documents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"document_id\",\n \"file_name\"\n ]\n },\n \"zcrm_potential_id\": {\n \"description\": \"Unique identifier linking the sales order to a Zoho CRM potential record.\",\n \"type\": \"string\",\n \"example\": \"460000000033001\"\n },\n \"zcrm_potential_name\": {\n \"description\": \"Descriptive name of the Zoho CRM potential record associated with this sales order.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderSubStatus.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderSubStatus.json new file mode 100644 index 00000000..fb9f4a40 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderSubStatus.json @@ -0,0 +1,187 @@ +{ + "name": "UpdateSalesOrderSubStatus", + "fully_qualified_name": "ZohoBooksApi.UpdateSalesOrderSubStatus@0.1.0", + "description": "Update the sub status of a sales order in Zoho Books.\n\nThis tool updates the sub status of a specified sales order in Zoho Books, identified by the sales order ID and the new status code. It should be called when you need to change the status of an existing sales order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization in Zoho Books. This ID is required to specify which organization's sales order needs an update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier for the specific sales order to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "sales_order_status_code", + "required": true, + "description": "The unique code representing the new status for a sales order. This is required to update the status in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique code of the status of a sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "status_code" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_sales_order_sub_status'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/substatus/{status_code}", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "status_code", + "tool_parameter_name": "sales_order_status_code", + "description": "Unique code of the status of a sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique code of the status of a sales order." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderTemplate.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderTemplate.json new file mode 100644 index 00000000..e8f104f9 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderTemplate.json @@ -0,0 +1,187 @@ +{ + "name": "UpdateSalesOrderTemplate", + "fully_qualified_name": "ZohoBooksApi.UpdateSalesOrderTemplate@0.1.0", + "description": "Update the PDF template for a sales order.\n\nThis tool updates the PDF template associated with a specific sales order. Use it when you need to change the template for an existing sales order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization associated with the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_id", + "required": true, + "description": "Unique identifier for the sales order to be updated with a new PDF template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "sales_order_template_id", + "required": true, + "description": "Unique identifier of the sales order template to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_sales_order_template'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/templates/{template_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_id", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "template_id", + "tool_parameter_name": "sales_order_template_id", + "description": "Unique identifier of the sales order template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order template." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderWithCustomField.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderWithCustomField.json new file mode 100644 index 00000000..713c4f28 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesOrderWithCustomField.json @@ -0,0 +1,1531 @@ +{ + "name": "UpdateSalesOrderWithCustomField", + "fully_qualified_name": "ZohoBooksApi.UpdateSalesOrderWithCustomField@0.1.0", + "description": "Update or create a sales order using a custom field.\n\nUse a custom field's unique value to update an existing sales order or create a new one if the order does not exist and the required details are provided. This tool is useful when managing sales orders using specific identifiers in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "unique_custom_field_api_name", + "required": true, + "description": "The API name of the unique custom field used to identify the sales order to update or create.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "unique_custom_field_value", + "required": true, + "description": "The unique value of the custom field used to retrieve and update a specific sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "sales_order_details", + "required": false, + "description": "JSON object containing details to create or update a sales order, including customer ID, currency ID, line items, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer receiving the sales order. This ID links the order to a specific customer account and determines billing information, payment terms, pricing rules, and tax calculations based on customer settings. Can be fetched from the Get Contacts API or retrieved from existing customer records in your organization." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the sales order transaction. Determines pricing display, exchange rate calculations, and affects financial reporting. If not specified, the organization default currency will be used automatically. Can be fetched from the Get Currencies API or retrieved from your organization currency settings." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the sales order was created in YYYY-MM-DD format. This date affects order processing timelines, delivery schedules, payment terms calculation, and appears on customer-facing documents and internal reports." + }, + "shipment_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected or actual date when goods will be shipped to the customer in YYYY-MM-DD format. Used for delivery planning, customer communication, inventory management, and tracking order fulfillment timelines." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "salesperson_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the salesperson responsible for this sales order. Links the order to a specific sales representative customer relationship management, and sales reporting purposes." + }, + "merchant_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the merchant" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group applied" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item e.g. kgs, Nos." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order items." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + } + }, + "description": "Line items of a sales order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form text field containing additional information, instructions, or comments related to the sales order. This field supports internal documentation, customer-specific requirements, special handling instructions, and inter-departmental communication for order processing workflows." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contractual terms and conditions governing the sales order transaction. Defines payment obligations, delivery specifications, warranty provisions, liability limitations, and other legal stipulations that establish the binding agreement between the organization and customer for this specific transaction." + }, + "billing_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer billing address entity. Determines the address used for invoice generation, payment processing, tax jurisdiction calculations, and financial record-keeping. Must correspond to a valid address record associated with the specified customer account." + }, + "shipping_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer shipping address entity. Specifies the delivery destination for goods fulfillment, logistics planning, shipping cost calculations, and delivery confirmation processes. Must correspond to a valid address record within the customer address registry." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "crm_custom_reference_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the sales order. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the sales order.Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "salesorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique alphanumeric identifier for the sales order entity. Required when automatic numbering is disabled in organization settings. Must be unique within the organization and follows the configured numbering sequence pattern for sales order identification and tracking." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference identifier for cross-referencing with customer purchase orders, internal tracking systems, or third-party applications. Used for order reconciliation, customer communication, and integration with external business systems and workflows." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency conversion rate from the transaction currency to the organization base currency. Required for multi-currency transactions to ensure accurate financial reporting, profit calculations, and tax computations in the base currency denomination." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Full name of the sales representative assigned to this sales order. Automatically populated when salesperson_id is specified." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Notes for the Sales Order" + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Terms of the Sales Order" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Authority's name." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "shipping_charge": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional cost associated with product delivery and logistics services. Applied to the sales order total and affects final pricing calculations, profit margins, and customer billing. Supports decimal precision for accurate cost allocation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Manual modification amount applied to the sales order total for rounding corrections, special pricing arrangements, or other business-specific adjustments. Supports positive and negative values for additions or deductions from the order total." + }, + "delivery_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specification of the transportation and delivery mechanism for order fulfillment. Determines shipping costs, delivery timelines, carrier selection, and customer communication regarding order status and tracking information." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag determining the sequence of discount application in tax calculations. When true, discount is applied before tax computation; when false, discount is applied after tax calculation. Affects final pricing accuracy and tax compliance reporting." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Classification of discount application scope within the sales order. entity_level applies discount to the entire order total, while item_level applies discount to individual line items. Determines discount calculation methodology and affects pricing structure." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Textual explanation for the adjustment amount applied to the sales order. Provides audit trail documentation, justification for pricing modifications, and contextual information for financial reporting and compliance verification purposes." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricing structure applied to the sales order. Determines item rates, discount rules, and pricing policies based on customer segments, volume tiers, or promotional campaigns. Can be retrieved from the Pricebooks API." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the PDF document template used for sales order presentation. Determines document layout, branding elements, formatting specifications, and visual presentation standards for customer-facing documents and printed materials." + }, + "documents": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "zcrm_potential_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking the sales order to a Zoho CRM potential record." + }, + "zcrm_potential_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Descriptive name of the Zoho CRM potential record associated with this sales order." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "allow_creation_if_not_found", + "required": false, + "description": "Set to true to create a new sales order if the unique custom field value is not found. Complete details are required for creation.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_sales_order_using_custom_field'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "unique_custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "unique_custom_field_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "allow_creation_if_not_found", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "sales_order_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer receiving the sales order. This ID links the order to a specific customer account and determines billing information, payment terms, pricing rules, and tax calculations based on customer settings. Can be fetched from the Get Contacts API or retrieved from existing customer records in your organization." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the sales order transaction. Determines pricing display, exchange rate calculations, and affects financial reporting. If not specified, the organization default currency will be used automatically. Can be fetched from the Get Currencies API or retrieved from your organization currency settings." + }, + "contact_persons_associated": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "contact_person_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique ID of the Contact Person." + }, + "communication_preference": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_email_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if Email communication preference is enabled for the contact person at transaction level." + }, + "is_whatsapp_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to check if WhatsApp communication preference is enabled for the contact person at transaction level." + } + }, + "inner_properties": null, + "description": "Preferred modes of communication for the contact person at transaction level." + } + }, + "description": "Contact Persons associated with the transaction." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date when the sales order was created in YYYY-MM-DD format. This date affects order processing timelines, delivery schedules, payment terms calculation, and appears on customer-facing documents and internal reports." + }, + "shipment_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected or actual date when goods will be shipped to the customer in YYYY-MM-DD format. Used for delivery planning, customer communication, inventory management, and tracking order fulfillment timelines." + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order." + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "salesperson_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the salesperson responsible for this sales order. Links the order to a specific sales representative customer relationship management, and sales reporting purposes." + }, + "merchant_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the merchant" + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the customer." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to specify whether the line item rates are inclusive or exclusive of tax." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created." + }, + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the line item." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the line item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the line item." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the line item." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the TDS tax or TDS tax group applied" + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag" + }, + "tag_option_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reporting tag's option" + } + }, + "description": "Filter all your reports based on the tag" + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of the line item e.g. kgs, Nos." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for a sales order items." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales." + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API." + } + }, + "description": "Line items of a sales order." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form text field containing additional information, instructions, or comments related to the sales order. This field supports internal documentation, customer-specific requirements, special handling instructions, and inter-departmental communication for order processing workflows." + }, + "terms": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Contractual terms and conditions governing the sales order transaction. Defines payment obligations, delivery specifications, warranty provisions, liability limitations, and other legal stipulations that establish the binding agreement between the organization and customer for this specific transaction." + }, + "billing_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer billing address entity. Determines the address used for invoice generation, payment processing, tax jurisdiction calculations, and financial record-keeping. Must correspond to a valid address record associated with the specified customer account." + }, + "shipping_address_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier referencing the customer shipping address entity. Specifies the delivery destination for goods fulfillment, logistics planning, shipping cost calculations, and delivery confirmation processes. Must correspond to a valid address record within the customer address registry." + }, + "crm_owner_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "crm_custom_reference_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Optional) VAT treatment for the sales order. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the sales order.Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "is_reverse_charge_applied": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not." + }, + "salesorder_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique alphanumeric identifier for the sales order entity. Required when automatic numbering is disabled in organization settings. Must be unique within the organization and follows the configured numbering sequence pattern for sales order identification and tracking." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "External reference identifier for cross-referencing with customer purchase orders, internal tracking systems, or third-party applications. Used for order reconciliation, customer communication, and integration with external business systems and workflows." + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "discount": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \"12.5%\") or amount (e.g., \"190\")." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency conversion rate from the transaction currency to the organization base currency. Required for multi-currency transactions to ensure accurate financial reporting, profit calculations, and tax computations in the base currency denomination." + }, + "salesperson_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Full name of the sales representative assigned to this sales order. Automatically populated when salesperson_id is specified." + }, + "notes_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Notes for the Sales Order" + }, + "terms_default": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default Terms of the Sales Order" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax ID for the Sales Order." + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption applied" + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Authority's name." + }, + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of Tax Exemption that is applied" + }, + "avatax_exempt_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exemption certificate number of the customer." + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule." + }, + "shipping_charge": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional cost associated with product delivery and logistics services. Applied to the sales order total and affects final pricing calculations, profit margins, and customer billing. Supports decimal precision for accurate cost allocation." + }, + "adjustment": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Manual modification amount applied to the sales order total for rounding corrections, special pricing arrangements, or other business-specific adjustments. Supports positive and negative values for additions or deductions from the order total." + }, + "delivery_method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specification of the transportation and delivery mechanism for order fulfillment. Determines shipping costs, delivery timelines, carrier selection, and customer communication regarding order status and tracking information." + }, + "is_discount_before_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag determining the sequence of discount application in tax calculations. When true, discount is applied before tax computation; when false, discount is applied after tax calculation. Affects final pricing accuracy and tax compliance reporting." + }, + "discount_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Classification of discount application scope within the sales order. entity_level applies discount to the entire order total, while item_level applies discount to individual line items. Determines discount calculation methodology and affects pricing structure." + }, + "adjustment_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Textual explanation for the adjustment amount applied to the sales order. Provides audit trail documentation, justification for pricing modifications, and contextual information for financial reporting and compliance verification purposes." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricing structure applied to the sales order. Determines item rates, discount rules, and pricing policies based on customer segments, volume tiers, or promotional campaigns. Can be retrieved from the Pricebooks API." + }, + "template_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the PDF document template used for sales order presentation. Determines document layout, branding elements, formatting specifications, and visual presentation standards for customer-facing documents and printed materials." + }, + "documents": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "zcrm_potential_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier linking the sales order to a Zoho CRM potential record." + }, + "zcrm_potential_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Descriptive name of the Zoho CRM potential record associated with this sales order." + } + }, + "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 \"required\": [\n \"customer_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier for the customer receiving the sales order. This ID links the order to a specific customer account and determines billing information, payment terms, pricing rules, and tax calculations based on customer settings. Can be fetched from the Get Contacts API or retrieved from existing customer records in your organization.\",\n \"type\": \"string\",\n \"example\": \"460000000017138\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the sales order transaction. Determines pricing display, exchange rate calculations, and affects financial reporting. If not specified, the organization default currency will be used automatically. Can be fetched from the Get Currencies API or retrieved from your organization currency settings.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"contact_persons_associated\": {\n \"description\": \"Contact Persons associated with the transaction.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"contact_person_id\": {\n \"description\": \"Unique ID of the Contact Person.\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": 982000000567003\n },\n \"communication_preference\": {\n \"description\": \"Preferred modes of communication for the contact person at transaction level.\",\n \"type\": \"object\",\n \"properties\": {\n \"is_email_enabled\": {\n \"description\": \"Used to check if Email communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_whatsapp_enabled\": {\n \"description\": \"Used to check if WhatsApp communication preference is enabled for the contact person at transaction level.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"WhatsApp integration\"\n ]\n }\n }\n }\n }\n }\n },\n \"date\": {\n \"description\": \"Date when the sales order was created in YYYY-MM-DD format. This date affects order processing timelines, delivery schedules, payment terms calculation, and appears on customer-facing documents and internal reports.\",\n \"type\": \"string\",\n \"example\": \"2014-07-28\"\n },\n \"shipment_date\": {\n \"description\": \"Expected or actual date when goods will be shipped to the customer in YYYY-MM-DD format. Used for delivery planning, customer communication, inventory management, and tracking order fulfillment timelines.\",\n \"type\": \"string\"\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for a sales order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000639129\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"place_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\",\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"salesperson_id\": {\n \"description\": \"Unique identifier for the salesperson responsible for this sales order. Links the order to a specific sales representative customer relationship management, and sales reporting purposes.\",\n \"type\": \"string\",\n \"example\": \"460000000000097\"\n },\n \"merchant_id\": {\n \"description\": \"ID of the merchant\",\n \"type\": \"string\",\n \"example\": \"460000000000597\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the customer.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_inclusive_tax\": {\n \"description\": \"Used to specify whether the line item rates are inclusive or exclusive of tax.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"ca\"\n ]\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of a sales order.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_order\": {\n \"type\": \"integer\",\n \"example\": 0\n },\n \"line_item_id\": {\n \"description\": \"ID of the line item. Mandatory if the existing line item has to be updated. If empty, a new line item will be created.\",\n \"type\": \"string\",\n \"example\": \"460000000039131\"\n },\n \"item_id\": {\n \"description\": \"ID of the item.\",\n \"type\": \"string\",\n \"example\": \"460000000017088\"\n },\n \"rate\": {\n \"description\": \"Rate of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"name\": {\n \"description\": \"Name of the line item.\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"description\": {\n \"description\": \"Description of the line item.\",\n \"type\": \"string\",\n \"example\": \"500GB, USB 2.0 interface 1400 rpm, protective hard case.\"\n },\n \"quantity\": {\n \"description\": \"Quantity of the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 40\n },\n \"discount\": {\n \"description\": \"Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \\\"12.5%\\\") or amount (e.g., \\\"190\\\").\",\n \"type\": \"string\"\n },\n \"tax_id\": {\n \"description\": \"Tax ID for the Sales Order.\",\n \"type\": \"string\",\n \"example\": \"460000000017094\"\n },\n \"tds_tax_id\": {\n \"description\": \"ID of the TDS tax or TDS tax group applied\",\n \"type\": \"string\",\n \"example\": \"460000000017098\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tags\": {\n \"description\": \"Filter all your reports based on the tag\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the reporting tag\",\n \"type\": \"string\",\n \"example\": 462000000009070\n },\n \"tag_option_id\": {\n \"description\": \"ID of the reporting tag's option\",\n \"type\": \"string\",\n \"example\": 462000000002670\n }\n }\n }\n },\n \"unit\": {\n \"description\": \"Unit of the line item e.g. kgs, Nos.\",\n \"type\": \"string\",\n \"example\": \"Nos\"\n },\n \"item_custom_fields\": {\n \"description\": \"Custom fields for a sales order items.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"460000000639129\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of Tax Exemption that is applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for Saudi Arabia are ksa_pvt_health, ksa_pvt_edu, ksa_reimbursed_expense and ksa_house_sales.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location entity. Specifies the organizational location where the sales order transaction is processed, affecting tax jurisdiction calculations, inventory allocation, reporting segmentation, and location-specific business rules enforcement. Can be retrieved from the Locations API.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Free-form text field containing additional information, instructions, or comments related to the sales order. This field supports internal documentation, customer-specific requirements, special handling instructions, and inter-departmental communication for order processing workflows.\",\n \"type\": \"string\"\n },\n \"terms\": {\n \"description\": \"Contractual terms and conditions governing the sales order transaction. Defines payment obligations, delivery specifications, warranty provisions, liability limitations, and other legal stipulations that establish the binding agreement between the organization and customer for this specific transaction.\",\n \"type\": \"string\"\n },\n \"billing_address_id\": {\n \"description\": \"Unique identifier referencing the customer billing address entity. Determines the address used for invoice generation, payment processing, tax jurisdiction calculations, and financial record-keeping. Must correspond to a valid address record associated with the specified customer account.\",\n \"type\": \"string\",\n \"example\": 460000000032174\n },\n \"shipping_address_id\": {\n \"description\": \"Unique identifier referencing the customer shipping address entity. Specifies the delivery destination for goods fulfillment, logistics planning, shipping cost calculations, and delivery confirmation processes. Must correspond to a valid address record within the customer address registry.\",\n \"type\": \"string\"\n },\n \"crm_owner_id\": {\n \"type\": \"string\"\n },\n \"crm_custom_reference_id\": {\n \"type\": \"string\"\n },\n \"vat_treatment\": {\n \"description\": \"(Optional) VAT treatment for the sales order. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the customer is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered and if he resides outside the UK then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the sales order.Allowed Values: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_reverse_charge_applied\": {\n \"description\": \"(Required if customer tax treatment is vat_registered)
Used to specify whether the transaction is applicable for Domestic Reverse Charge (DRC) or not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"x-node_available_in\": [\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"salesorder_number\": {\n \"description\": \"Unique alphanumeric identifier for the sales order entity. Required when automatic numbering is disabled in organization settings. Must be unique within the organization and follows the configured numbering sequence pattern for sales order identification and tracking.\",\n \"type\": \"string\",\n \"example\": \"SO-00001\"\n },\n \"reference_number\": {\n \"description\": \"External reference identifier for cross-referencing with customer purchase orders, internal tracking systems, or third-party applications. Used for order reconciliation, customer communication, and integration with external business systems and workflows.\",\n \"type\": \"string\",\n \"example\": \"REF-001\"\n },\n \"is_update_customer\": {\n \"description\": \"Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"discount\": {\n \"description\": \"Discount value applied to the sales order total, specified as either percentage or absolute amount. Supports decimal precision and affects final pricing calculations, tax computations, and financial reporting. Format: percentage (e.g., \\\"12.5%\\\") or amount (e.g., \\\"190\\\").\",\n \"type\": \"string\"\n },\n \"exchange_rate\": {\n \"description\": \"Currency conversion rate from the transaction currency to the organization base currency. Required for multi-currency transactions to ensure accurate financial reporting, profit calculations, and tax computations in the base currency denomination.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1.233\n },\n \"salesperson_name\": {\n \"description\": \"Full name of the sales representative assigned to this sales order. Automatically populated when salesperson_id is specified.\",\n \"type\": \"string\",\n \"example\": \"John Roberts\"\n },\n \"notes_default\": {\n \"description\": \"Default Notes for the Sales Order\",\n \"type\": \"string\"\n },\n \"terms_default\": {\n \"description\": \"Default Terms of the Sales Order\",\n \"type\": \"string\"\n },\n \"tax_id\": {\n \"description\": \"Tax ID for the Sales Order.\",\n \"type\": \"string\",\n \"example\": \"460000000017094\"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Tax Authority's name.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_code\": {\n \"description\": \"Code of Tax Exemption that is applied\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_exempt_no\": {\n \"description\": \"Exemption certificate number of the customer.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"shipping_charge\": {\n \"description\": \"Additional cost associated with product delivery and logistics services. Applied to the sales order total and affects final pricing calculations, profit margins, and customer billing. Supports decimal precision for accurate cost allocation.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2\n },\n \"adjustment\": {\n \"description\": \"Manual modification amount applied to the sales order total for rounding corrections, special pricing arrangements, or other business-specific adjustments. Supports positive and negative values for additions or deductions from the order total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0.2\n },\n \"delivery_method\": {\n \"description\": \"Specification of the transportation and delivery mechanism for order fulfillment. Determines shipping costs, delivery timelines, carrier selection, and customer communication regarding order status and tracking information.\",\n \"type\": \"string\",\n \"example\": \"Air\"\n },\n \"is_discount_before_tax\": {\n \"description\": \"Boolean flag determining the sequence of discount application in tax calculations. When true, discount is applied before tax computation; when false, discount is applied after tax calculation. Affects final pricing accuracy and tax compliance reporting.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"discount_type\": {\n \"description\": \"Classification of discount application scope within the sales order. entity_level applies discount to the entire order total, while item_level applies discount to individual line items. Determines discount calculation methodology and affects pricing structure.\",\n \"type\": \"string\",\n \"example\": \"entity_level\"\n },\n \"adjustment_description\": {\n \"description\": \"Textual explanation for the adjustment amount applied to the sales order. Provides audit trail documentation, justification for pricing modifications, and contextual information for financial reporting and compliance verification purposes.\",\n \"type\": \"string\",\n \"example\": \"Adjustment\"\n },\n \"pricebook_id\": {\n \"description\": \"Unique identifier for the pricing structure applied to the sales order. Determines item rates, discount rules, and pricing policies based on customer segments, volume tiers, or promotional campaigns. Can be retrieved from the Pricebooks API.\",\n \"type\": \"string\"\n },\n \"template_id\": {\n \"description\": \"Unique identifier for the PDF document template used for sales order presentation. Determines document layout, branding elements, formatting specifications, and visual presentation standards for customer-facing documents and printed materials.\",\n \"type\": \"string\",\n \"example\": \"460000000021001\"\n },\n \"documents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"document_id\",\n \"file_name\"\n ]\n },\n \"zcrm_potential_id\": {\n \"description\": \"Unique identifier linking the sales order to a Zoho CRM potential record.\",\n \"type\": \"string\",\n \"example\": \"460000000033001\"\n },\n \"zcrm_potential_name\": {\n \"description\": \"Descriptive name of the Zoho CRM potential record associated with this sales order.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesReceipt.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesReceipt.json new file mode 100644 index 00000000..543aa193 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateSalesReceipt.json @@ -0,0 +1,335 @@ +{ + "name": "UpdateSalesReceipt", + "fully_qualified_name": "ZohoBooksApi.UpdateSalesReceipt@0.1.0", + "description": "Update an existing sales receipt in Zoho Books.\n\nThis tool is used to update details of an existing sales receipt in Zoho Books. It should be called when modifications to sales receipt data are required, such as changing amounts, dates, or other relevant information.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. It is required to specify which organization's sales receipt needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_receipt_identifier", + "required": true, + "description": "Unique identifier for the sales receipt to be updated. This is required to specify which receipt to modify.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sales_receipt_id" + }, + { + "name": "sales_receipt_details", + "required": false, + "description": "JSON object containing details to update the sales receipt. Includes customer_id, receipt_number, date, payment_mode, line_items (array including item_id, rate, quantity), and notes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer" + }, + "receipt_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sales receipt number" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the sales receipt" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment was received" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the item" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item" + } + }, + "description": "Line items for the sales receipt" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the sales receipt" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_sales_receipt'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesreceipts/{sales_receipt_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sales_receipt_id", + "tool_parameter_name": "sales_receipt_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": "sales_receipt_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the customer" + }, + "receipt_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sales receipt number" + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the sales receipt" + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode through which payment was received" + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the item" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate of the item" + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Quantity of the item" + } + }, + "description": "Line items for the sales receipt" + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notes for the sales receipt" + } + }, + "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 \"required\": [\n \"customer_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"customer_id\": {\n \"description\": \"Unique identifier for the customer\",\n \"type\": \"string\",\n \"example\": \"460000000017138\"\n },\n \"receipt_number\": {\n \"description\": \"Sales receipt number\",\n \"type\": \"string\",\n \"example\": \"SR-00001\"\n },\n \"date\": {\n \"description\": \"Date of the sales receipt\",\n \"type\": \"string\",\n \"example\": \"2014-07-28\"\n },\n \"payment_mode\": {\n \"description\": \"Mode through which payment was received\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"line_items\": {\n \"description\": \"Line items for the sales receipt\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"ID of the item\",\n \"type\": \"string\",\n \"example\": \"460000000017088\"\n },\n \"rate\": {\n \"description\": \"Rate of the item\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"quantity\": {\n \"description\": \"Quantity of the item\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 2\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Notes for the sales receipt\",\n \"type\": \"string\",\n \"example\": \"Thank you for your business\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateShippingAddressSalesOrder.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateShippingAddressSalesOrder.json new file mode 100644 index 00000000..61c5ff5e --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateShippingAddressSalesOrder.json @@ -0,0 +1,349 @@ +{ + "name": "UpdateShippingAddressSalesOrder", + "fully_qualified_name": "ZohoBooksApi.UpdateShippingAddressSalesOrder@0.1.0", + "description": "Update the shipping address for a specific sales order.\n\nThis tool updates the shipping address for a specific sales order in Zoho Books. It should be called when there's a need to modify the delivery location of an existing order.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The ID of the organization in Zoho Books to update the shipping address for the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "sales_order_identifier", + "required": true, + "description": "Unique identifier of the sales order to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "salesorder_id" + }, + { + "name": "shipping_address_details", + "required": false, + "description": "JSON object containing details like address, city, state, zip, country, fax, attention, is_one_off_address, is_update_customer, and is_verified. This updates the shipping address for the sales order.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the address" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the Address" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP Code of the Address" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the Address" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax Number" + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_one_off_address": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "is_verified": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Address is verified" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_sales_order_shipping_address'.", + "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": [ + "ZohoBooks.salesorders.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/salesorders/{salesorder_id}/address/shipping", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "salesorder_id", + "tool_parameter_name": "sales_order_identifier", + "description": "Unique identifier of the sales order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the sales order." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "shipping_address_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Address" + }, + "city": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "City of the address" + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "State of the Address" + }, + "zip": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ZIP Code of the Address" + }, + "country": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Country of the Address" + }, + "fax": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fax Number" + }, + "attention": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_one_off_address": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems." + }, + "is_verified": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Address is verified" + } + }, + "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 \"address\": {\n \"description\": \"Address\",\n \"type\": \"string\",\n \"example\": \"B-1104, 11F, \\nHorizon International Tower, \\nNo. 6, ZhiChun Road, HaiDian District\"\n },\n \"city\": {\n \"description\": \"City of the address\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"state\": {\n \"description\": \"State of the Address\",\n \"type\": \"string\",\n \"example\": \"Beijing\"\n },\n \"zip\": {\n \"description\": \"ZIP Code of the Address\",\n \"type\": \"string\",\n \"example\": \"1000881\"\n },\n \"country\": {\n \"description\": \"Country of the Address\",\n \"type\": \"string\",\n \"example\": \"China\"\n },\n \"fax\": {\n \"description\": \"Fax Number\",\n \"type\": \"string\",\n \"example\": \"+86-10-82637827\"\n },\n \"attention\": {\n \"type\": \"string\"\n },\n \"is_one_off_address\": {\n \"type\": \"boolean\",\n \"example\": true\n },\n \"is_update_customer\": {\n \"description\": \"Boolean flag indicating whether customer billing address information should be synchronized with the sales order data. When enabled, updates the customer master record with address modifications, ensuring data consistency across customer relationship management systems.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_verified\": {\n \"description\": \"Check if the Address is verified\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxAuthorityDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxAuthorityDetails.json new file mode 100644 index 00000000..c331c490 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxAuthorityDetails.json @@ -0,0 +1,253 @@ +{ + "name": "UpdateTaxAuthorityDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateTaxAuthorityDetails@0.1.0", + "description": "Update details of a tax authority.\n\nUse this tool to update information for a specific tax authority. Ideal for modifications to existing records.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization for which the tax authority details need to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_authority_identifier", + "required": true, + "description": "Unique identifier of the tax authority to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax authority." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_authority_id" + }, + { + "name": "tax_authority_update_details", + "required": false, + "description": "JSON object containing details like name, description, registration number, and label to update a tax authority.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description." + }, + "registration_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Registration Number of the Tax Authority" + }, + "registration_number_label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_tax_authority'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxauthorities/{tax_authority_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_authority_id", + "tool_parameter_name": "tax_authority_identifier", + "description": "Unique identifier of the tax authority.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax authority." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "tax_authority_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description." + }, + "registration_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Registration Number of the Tax Authority" + }, + "registration_number_label": { + "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 \"tax_authority_name\": {\n \"description\": \"Name of the Tax Authority\",\n \"type\": \"string\",\n \"example\": \"Illinois Department of Revenue\"\n },\n \"description\": {\n \"description\": \"Description.\",\n \"type\": \"string\",\n \"example\": \"The New York State Department of Taxation and Finance\"\n },\n \"registration_number\": {\n \"description\": \"Registration Number of the Tax Authority\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"registration_number_label\": {\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxDetails.json new file mode 100644 index 00000000..ab032e45 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxDetails.json @@ -0,0 +1,509 @@ +{ + "name": "UpdateTaxDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateTaxDetails@0.1.0", + "description": "Update the details of a specified tax.\n\nUse this tool to update the details of a simple or compound tax by providing the tax ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier for the organization that owns the tax to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_identifier", + "required": true, + "description": "Unique identifier of the tax to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_id" + }, + { + "name": "tax_update_details", + "required": false, + "description": "JSON object containing details of the tax to be updated, including tax ID, name, percentage, type, authority details, and additional update flags.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax" + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of Percentage Taxable." + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type to determine whether it is a simple or compound tax. Allowed Values: tax and compound_tax" + }, + "tax_factor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Tax Factor. Allowed values: rate, share" + }, + "tax_specific_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Tax For Indian Edition. Allowed Values : igst ,cgst ,sgst ,nil, cess .
Type of Tax for Mexico Edition. Allowed Values : isr, iva, ieps.
Type of Tax for South Africa Edition. Allowed Values :
soa_less_than_28d - Supply of accommodation not exceeding 28 days,
soa_more_than_28d - Supply of accommodation exceeding than 28 days,
ciu_prev_tax_supply - Change in use (Taxable supplies),
ciu_prev_nontax_supply - Change in use (Non-Taxable supplies),
export_of_shg - Export of second hand goods." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Two letter country code for the EU country to which the tax belongs." + }, + "purchase_tax_expense_account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account ID in which Purchase Tax will be Computed" + }, + "is_value_added": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Tax is Value Added" + }, + "update_recurring_invoice": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if recurring invoice should be updated" + }, + "update_recurring_expense": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if recurring expenses should be updated" + }, + "update_draft_invoice": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Draft Invoices should be updated" + }, + "update_recurring_bills": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Recurring Bills should be updated" + }, + "update_draft_so": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Draft Sales Orders should be updated" + }, + "update_subscription": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Subscriptions should be updated" + }, + "update_project": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Projects should be updated" + }, + "is_editable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if tax is editable" + }, + "tds_payable_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Input Tax ID. The amount of money charged to you as Tax on your purchases." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_tax'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxes/{tax_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_id", + "tool_parameter_name": "tax_identifier", + "description": "Unique identifier of the tax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "tax_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Tax" + }, + "tax_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax" + }, + "tax_percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of Percentage Taxable." + }, + "tax_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type to determine whether it is a simple or compound tax. Allowed Values: tax and compound_tax" + }, + "tax_factor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Tax Factor. Allowed values: rate, share" + }, + "tax_specific_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of Tax For Indian Edition. Allowed Values : igst ,cgst ,sgst ,nil, cess .
Type of Tax for Mexico Edition. Allowed Values : isr, iva, ieps.
Type of Tax for South Africa Edition. Allowed Values :
soa_less_than_28d - Supply of accommodation not exceeding 28 days,
soa_more_than_28d - Supply of accommodation exceeding than 28 days,
ciu_prev_tax_supply - Change in use (Taxable supplies),
ciu_prev_nontax_supply - Change in use (Non-Taxable supplies),
export_of_shg - Export of second hand goods." + }, + "tax_authority_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the Tax Authority" + }, + "tax_authority_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority." + }, + "country_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Two letter country code for the EU country to which the tax belongs." + }, + "purchase_tax_expense_account_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Account ID in which Purchase Tax will be Computed" + }, + "is_value_added": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Tax is Value Added" + }, + "update_recurring_invoice": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if recurring invoice should be updated" + }, + "update_recurring_expense": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if recurring expenses should be updated" + }, + "update_draft_invoice": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Draft Invoices should be updated" + }, + "update_recurring_bills": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Recurring Bills should be updated" + }, + "update_draft_so": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Draft Sales Orders should be updated" + }, + "update_subscription": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Subscriptions should be updated" + }, + "update_project": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if Projects should be updated" + }, + "is_editable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if tax is editable" + }, + "tds_payable_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Input Tax ID. The amount of money charged to you as Tax on your purchases." + } + }, + "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 \"tax_id\": {\n \"description\": \"ID of the Tax\",\n \"type\": \"string\",\n \"example\": \"982000000566009\"\n },\n \"tax_name\": {\n \"description\": \"Name of the Tax\",\n \"type\": \"string\",\n \"example\": \"Sales Group\"\n },\n \"tax_percentage\": {\n \"description\": \"Number of Percentage Taxable.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 10.5\n },\n \"tax_type\": {\n \"description\": \"Type to determine whether it is a simple or compound tax. Allowed Values: tax and compound_tax\",\n \"type\": \"string\",\n \"example\": \"tax\"\n },\n \"tax_factor\": {\n \"description\": \"Type of Tax Factor. Allowed values: rate, share\",\n \"type\": \"string\",\n \"example\": \"rate\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_specific_type\": {\n \"description\": \"Type of Tax For Indian Edition. Allowed Values : igst ,cgst ,sgst ,nil, cess .
Type of Tax for Mexico Edition. Allowed Values : isr, iva, ieps.
Type of Tax for South Africa Edition. Allowed Values :
soa_less_than_28d - Supply of accommodation not exceeding 28 days,
soa_more_than_28d - Supply of accommodation exceeding than 28 days,
ciu_prev_tax_supply - Change in use (Taxable supplies),
ciu_prev_nontax_supply - Change in use (Non-Taxable supplies),
export_of_shg - Export of second hand goods.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"mx\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_authority_name\": {\n \"description\": \"Name of the Tax Authority\",\n \"type\": \"string\",\n \"example\": \"Illinois Department of Revenue\"\n },\n \"tax_authority_id\": {\n \"description\": \"ID of the tax authority. Tax authority depends on the location of the customer. For example, if the customer is located in NY, then the tax authority is NY tax authority.\",\n \"type\": \"string\",\n \"example\": \"460000000066001\",\n \"x-node_available_in\": [\n \"us\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"country_code\": {\n \"description\": \"Two letter country code for the EU country to which the tax belongs.\",\n \"type\": \"string\",\n \"example\": \"UK\",\n \"x-node_available_in\": [\n \"uk\",\n \"eu\",\n \"gcc\",\n \"global\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"purchase_tax_expense_account_id\": {\n \"description\": \"Account ID in which Purchase Tax will be Computed\",\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"x-node_available_in\": [\n \"au\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"is_value_added\": {\n \"description\": \"Check if Tax is Value Added\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_recurring_invoice\": {\n \"description\": \"Check if recurring invoice should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_recurring_expense\": {\n \"description\": \"Check if recurring expenses should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_draft_invoice\": {\n \"description\": \"Check if Draft Invoices should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_recurring_bills\": {\n \"description\": \"Check if Recurring Bills should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_draft_so\": {\n \"description\": \"Check if Draft Sales Orders should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_subscription\": {\n \"description\": \"Check if Subscriptions should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"update_project\": {\n \"description\": \"Check if Projects should be updated\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_editable\": {\n \"description\": \"Check if tax is editable\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"tds_payable_account_id\": {\n \"description\": \"Input Tax ID. The amount of money charged to you as Tax on your purchases.\",\n \"type\": \"string\",\n \"example\": \"132086000000107337\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxExemptionDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxExemptionDetails.json new file mode 100644 index 00000000..f1615b73 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxExemptionDetails.json @@ -0,0 +1,237 @@ +{ + "name": "UpdateTaxExemptionDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateTaxExemptionDetails@0.1.0", + "description": "Update the details of a tax exemption.\n\nThis tool updates the information of a specific tax exemption. It should be called when changes to tax exemption records are needed, such as modifying existing details.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier of the organization for which the tax exemption needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_exemption_identifier", + "required": true, + "description": "Unique identifier for the tax exemption to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax exemption." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_exemption_id" + }, + { + "name": "tax_exemption_details", + "required": false, + "description": "A JSON object containing the tax exemption code, description, and type (either 'customer' or 'item').", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the tax exemption, can be customer or item." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_tax_exemption'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxexemptions/{tax_exemption_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_exemption_id", + "tool_parameter_name": "tax_exemption_identifier", + "description": "Unique identifier of the tax exemption.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax exemption." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "tax_exemption_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_exemption_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Code of the Tax Exemption" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the tax exemption, can be customer or item." + } + }, + "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 \"required\": [\n \"tax_exemption_code\",\n \"type\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"tax_exemption_code\": {\n \"description\": \"Code of the Tax Exemption\",\n \"type\": \"string\",\n \"example\": \"RESELLER\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"description\": {\n \"description\": \"Description\",\n \"type\": \"string\",\n \"example\": \"Tax exempted because the contact is a reseller.\"\n },\n \"type\": {\n \"description\": \"Type of the tax exemption, can be customer or item.\",\n \"type\": \"string\",\n \"example\": \"customer\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxGroupDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxGroupDetails.json new file mode 100644 index 00000000..adf435a3 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTaxGroupDetails.json @@ -0,0 +1,221 @@ +{ + "name": "UpdateTaxGroupDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateTaxGroupDetails@0.1.0", + "description": "Update details of a specific tax group in Zoho Books.\n\nThis tool updates the details of a tax group in Zoho Books using the provided tax group ID. It should be called when changes are needed to the tax group's configuration.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "tax_group_identifier", + "required": true, + "description": "Unique identifier of the tax group to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax group." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tax_group_id" + }, + { + "name": "tax_group_details", + "required": false, + "description": "JSON object containing details like tax group name and associated tax IDs. Specify 'tax_group_name' and 'taxes' (comma-separated tax IDs).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_group_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the tax group to be created." + }, + "taxes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma Seperated list of tax IDs that are to be associated to the tax group." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_tax_group'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/settings/taxgroups/{tax_group_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tax_group_id", + "tool_parameter_name": "tax_group_identifier", + "description": "Unique identifier of the tax group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the tax group." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "tax_group_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tax_group_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the tax group to be created." + }, + "taxes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma Seperated list of tax IDs that are to be associated to the tax group." + } + }, + "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 \"tax_group_name\": {\n \"description\": \"Name of the tax group to be created.\",\n \"type\": \"string\",\n \"example\": \"Sales Group\"\n },\n \"taxes\": {\n \"description\": \"Comma Seperated list of tax IDs that are to be associated to the tax group.\",\n \"type\": \"string\",\n \"example\": \"982000000566009\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTimeEntry.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTimeEntry.json new file mode 100644 index 00000000..271e5007 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateTimeEntry.json @@ -0,0 +1,365 @@ +{ + "name": "UpdateTimeEntry", + "fully_qualified_name": "ZohoBooksApi.UpdateTimeEntry@0.1.0", + "description": "Updates an existing logged time entry.\n\nUse this tool to modify details of a previously logged time entry in Zoho Books. Ideal when adjustments or updates need to be made to existing time logs.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization to which the time entry belongs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "time_entry_identifier", + "required": true, + "description": "Unique identifier of the existing time entry to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the time entry." + }, + "inferrable": true, + "http_endpoint_parameter_name": "time_entry_id" + }, + { + "name": "time_entry_details", + "required": false, + "description": "A JSON object containing details of the time entry such as project_id, task_id, user_id, log_date, log_time, begin_time, end_time, is_billable, notes, start_timer, and cost_rate. This provides the updated details for the logged time entry.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project." + }, + "task_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the task." + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user." + }, + "log_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the user spent on the task. Date-Format [HH:mm]" + }, + "log_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user spent on this task. Either send this attribute or begin and end time attributes. Time-Format [HH:mm]" + }, + "begin_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user started working on this task. Time-Format [HH:mm]" + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user stopped working on this task. Time-Format [HH:mm]" + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether it is billable or not." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the work done. Max-length [500]" + }, + "start_timer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start timer." + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly cost rate" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_time_entry'.", + "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": [ + "ZohoBooks.projects.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/projects/timeentries/{time_entry_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "time_entry_id", + "tool_parameter_name": "time_entry_identifier", + "description": "Unique identifier of the time entry.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the time entry." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "time_entry_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project." + }, + "task_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the task." + }, + "user_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user." + }, + "log_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date on which the user spent on the task. Date-Format [HH:mm]" + }, + "log_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user spent on this task. Either send this attribute or begin and end time attributes. Time-Format [HH:mm]" + }, + "begin_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user started working on this task. Time-Format [HH:mm]" + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time the user stopped working on this task. Time-Format [HH:mm]" + }, + "is_billable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether it is billable or not." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the work done. Max-length [500]" + }, + "start_timer": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start timer." + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly cost rate" + } + }, + "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 \"required\": [\n \"project_id\",\n \"task_id\",\n \"user_id\",\n \"log_date\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"project_id\": {\n \"description\": \"ID of the project.\",\n \"type\": \"string\",\n \"example\": \"Network Distribution\"\n },\n \"task_id\": {\n \"description\": \"ID of the task.\",\n \"type\": \"string\",\n \"example\": \"460000000044001\"\n },\n \"user_id\": {\n \"description\": \"ID of the user.\",\n \"type\": \"string\",\n \"example\": \"460000000024003\"\n },\n \"log_date\": {\n \"description\": \"Date on which the user spent on the task. Date-Format [HH:mm]\",\n \"type\": \"string\",\n \"example\": \"2013-09-17\"\n },\n \"log_time\": {\n \"description\": \"Time the user spent on this task. Either send this attribute or begin and end time attributes. Time-Format [HH:mm]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"begin_time\": {\n \"description\": \"Time the user started working on this task. Time-Format [HH:mm]\",\n \"type\": \"string\",\n \"example\": \"10:00\"\n },\n \"end_time\": {\n \"description\": \"Time the user stopped working on this task. Time-Format [HH:mm]\",\n \"type\": \"string\",\n \"example\": \"15:00\"\n },\n \"is_billable\": {\n \"description\": \"Whether it is billable or not.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"notes\": {\n \"description\": \"Description of the work done. Max-length [500]\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"start_timer\": {\n \"description\": \"Start timer.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"cost_rate\": {\n \"description\": \"Hourly cost rate\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateUserDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateUserDetails.json new file mode 100644 index 00000000..0e67a104 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateUserDetails.json @@ -0,0 +1,253 @@ +{ + "name": "UpdateUserDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateUserDetails@0.1.0", + "description": "Update user details in Zoho Books.\n\nUse this tool to update the information of an existing user in Zoho Books. Call it when changes to a user's profile are needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique ID of the organization whose user's details are being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "user_identifier", + "required": true, + "description": "Unique identifier of the user to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + }, + { + "name": "user_details_payload", + "required": false, + "description": "A JSON object containing user's name, email, role ID, and cost rate for updating their profile.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "name of the user" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "email address of the user" + }, + "role_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly cost rate" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_user'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/users/{user_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "Unique identifier of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the user." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "user_details_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "name of the user" + }, + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "email address of the user" + }, + "role_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "cost_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Hourly cost rate" + } + }, + "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 \"required\": [\n \"name\",\n \"email\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"name of the user\",\n \"type\": \"string\",\n \"example\": \"Sujin Kumar\"\n },\n \"email\": {\n \"description\": \"email address of the user\",\n \"type\": \"string\",\n \"example\": \"johndavid@zilliuminc.com\"\n },\n \"role_id\": {\n \"type\": \"string\",\n \"example\": \"982000000006005\"\n },\n \"cost_rate\": {\n \"description\": \"Hourly cost rate\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 0\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorCredit.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorCredit.json new file mode 100644 index 00000000..78700842 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorCredit.json @@ -0,0 +1,1031 @@ +{ + "name": "UpdateVendorCredit", + "fully_qualified_name": "ZohoBooksApi.UpdateVendorCredit@0.1.0", + "description": "Update an existing vendor credit in Zoho Books.\n\nUse this tool to update the details of a specific vendor credit in Zoho Books. Call this when modifications to vendor credits are needed.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_identifier", + "required": true, + "description": "The unique identifier of the organization in Zoho Books. Required to update vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_id", + "required": true, + "description": "The unique identifier for the vendor credit to be updated. This string is required to locate the specific credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "vendor_credit_details", + "required": false, + "description": "JSON object containing details for updating the vendor credit, including vendor ID, currency ID, VAT treatment, credit number, and line items.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor contact. Retrieve vendor IDs from the Get Contacts API endpoint in the contacts section. This ID links the vendor credit to the specific vendor record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the vendor credit. Can differ from vendor currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the vendor credits. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registeredand if he resides outside the EU then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vendor_credit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory if auto number generation is disabled." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the vendor credit. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricebook used for pricing items in the vendor credit. Retrieve pricebook IDs from the pricebooks API endpoint." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to update customer information when creating the vendor credit. This will modify the associated customer record with new details from the vendor credit." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the vendor credit is created. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true if line item rates include tax amounts. When true, tax is already included in the item rates. When false, tax will be calculated and added to the rates." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the line item within the vendor credit. System-generated ID used for identifying and referencing specific line items in the vendor credit." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the vendor credit document." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for the line item. Determines the display order of line items on the vendor credit document. Lower numbers appear first." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples: kgs, Nos, hours, pieces. Used to specify how the quantity is measured." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. The amount per unit before taxes and discounts. Used with quantity to calculate the line total." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS Tax ID of the Tax associated with the Vendor Credit" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag option" + } + }, + "description": "Array of tags associated with the line item. Each tag contains tag_id and tag_option_id for categorization and tracking purposes." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of a vendor credit." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the vendor credit. Displayed on the vendor credit document for vendor reference. Max-length [5000]" + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_vendor_credit'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_identifier", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_id", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "vendor_credit_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the vendor contact. Retrieve vendor IDs from the Get Contacts API endpoint in the contacts section. This ID links the vendor credit to the specific vendor record." + }, + "currency_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the currency used in the vendor credit. Can differ from vendor currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section." + }, + "vat_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the vendor credits. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registeredand if he resides outside the EU then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu)." + }, + "vendor_credit_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mandatory if auto number generation is disabled." + }, + "gst_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer ." + }, + "tax_treatment": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "VAT treatment for the vendor credit. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica)." + }, + "gst_no": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "15 digit GST identification number of the vendor." + }, + "source_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)" + }, + "destination_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)" + }, + "place_of_supply": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA." + }, + "pricebook_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pricebook used for pricing items in the vendor credit. Retrieve pricebook IDs from the pricebooks API endpoint." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "is_update_customer": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true to update customer information when creating the vendor credit. This will modify the associated customer record with new details from the vendor credit." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the vendor credit is created. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "is_inclusive_tax": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to true if line item rates include tax amounts. When true, tax is already included in the item rates. When false, tax will be calculated and added to the rates." + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules." + }, + "line_items": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service." + }, + "line_item_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the line item within the vendor credit. System-generated ID used for identifying and referencing specific line items in the vendor credit." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name or title of the line item. Describes the product or service being credited. This name is displayed on the vendor credit document." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "reverse_charge_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the reverse charge tax" + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document." + }, + "item_order": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sequential order number for the line item. Determines the display order of line items on the vendor credit document. Lower numbers appear first." + }, + "quantity": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item." + }, + "unit": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit of measurement for the line item quantity. Examples: kgs, Nos, hours, pieces. Used to specify how the quantity is measured." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price or rate for the line item. The amount per unit before taxes and discounts. Used with quantity to calculate the line total." + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this line item." + }, + "tds_tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "TDS Tax ID of the Tax associated with the Vendor Credit" + }, + "tax_treatment_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense." + }, + "tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag" + }, + "tag_option_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tag option" + } + }, + "description": "Array of tags associated with the line item. Each tag contains tag_id and tag_option_id for categorization and tracking purposes." + }, + "item_custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + } + }, + "description": null + }, + "serial_numbers": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "project_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the project" + } + }, + "description": "Line items of a vendor credit." + }, + "notes": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional notes or comments for the vendor credit. Displayed on the vendor credit document for vendor reference. Max-length [5000]" + }, + "documents": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "document_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Document" + }, + "file_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the file" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "custom_field_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Custom Field" + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Label of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + } + }, + "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 \"required\": [\n \"vendor_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"Unique identifier for the vendor contact. Retrieve vendor IDs from the Get Contacts API endpoint in the contacts section. This ID links the vendor credit to the specific vendor record.\",\n \"type\": \"string\",\n \"example\": \"460000000020029\"\n },\n \"currency_id\": {\n \"description\": \"Unique identifier for the currency used in the vendor credit. Can differ from vendor currency if multi-currency is enabled. Retrieve currency IDs from the List Currencies API endpoint in the currency section.\",\n \"type\": \"string\",\n \"example\": \"3000000000083\"\n },\n \"vat_treatment\": {\n \"description\": \"VAT treatment for the vendor credits. VAT treatment denotes the location of the customer, if the customer resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registeredand if he resides outside the EU then his VAT treatment is overseas(For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"uk\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"vendor_credit_number\": {\n \"description\": \"Mandatory if auto number generation is disabled.\",\n \"type\": \"string\",\n \"example\": \"DN-00002\"\n },\n \"gst_treatment\": {\n \"description\": \"Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .\",\n \"type\": \"string\",\n \"example\": \"business_gst\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment\": {\n \"description\": \"VAT treatment for the vendor credit. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).\",\n \"type\": \"string\",\n \"example\": \"vat_registered\",\n \"x-node_available_in\": [\n \"gcc\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"gst_no\": {\n \"description\": \"15 digit GST identification number of the vendor.\",\n \"type\": \"string\",\n \"example\": \"22AAAAA0000A1Z5\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"source_of_supply\": {\n \"description\": \"Place from where the goods/services are supplied. (If not given, place of contact given for the contact will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"destination_of_supply\": {\n \"description\": \"Place where the goods/services are supplied to. (If not given, organisation's home state will be taken)\",\n \"type\": \"string\",\n \"example\": \"TN\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"place_of_supply\": {\n \"description\": \"The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.\",\n \"type\": \"string\",\n \"example\": \"DU\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"pricebook_id\": {\n \"description\": \"Unique identifier for the pricebook used for pricing items in the vendor credit. Retrieve pricebook IDs from the pricebooks API endpoint.\",\n \"type\": \"string\"\n },\n \"reference_number\": {\n \"description\": \"Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]\",\n \"type\": \"string\"\n },\n \"is_update_customer\": {\n \"description\": \"Set to true to update customer information when creating the vendor credit. This will modify the associated customer record with new details from the vendor credit.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date\": {\n \"description\": \"The date on which the vendor credit is created. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations.\",\n \"type\": \"string\",\n \"example\": \"2014-08-28\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"is_inclusive_tax\": {\n \"description\": \"Set to true if line item rates include tax amounts. When true, tax is already included in the item rates. When false, tax will be calculated and added to the rates.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\"\n ]\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"line_items\": {\n \"description\": \"Line items of a vendor credit.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"item_id\": {\n \"description\": \"Unique identifier for the item in the line item. Retrieve item IDs from the List Items API endpoint in the items section. Links the line item to a specific product or service.\",\n \"type\": \"string\",\n \"example\": \"460000000020071\"\n },\n \"line_item_id\": {\n \"description\": \"Unique identifier for the line item within the vendor credit. System-generated ID used for identifying and referencing specific line items in the vendor credit.\",\n \"type\": \"string\",\n \"example\": \"460000000020077\"\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes.\",\n \"type\": \"string\",\n \"example\": \"460000000020097\"\n },\n \"name\": {\n \"description\": \"Name or title of the line item. Describes the product or service being credited. This name is displayed on the vendor credit document.\",\n \"type\": \"string\",\n \"example\": \"Premium Plan - Web hosting\"\n },\n \"hsn_or_sac\": {\n \"description\": \"HSN Code\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"reverse_charge_tax_id\": {\n \"description\": \"ID of the reverse charge tax\",\n \"type\": \"string\",\n \"example\": 460000000057089,\n \"x-node_available_in\": [\n \"in\",\n \"gcc\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Unique identifier for the business location. Retrieve location IDs from the List Locations API endpoint in the locations section. Determines tax settings and business rules.\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document.\",\n \"type\": \"string\"\n },\n \"item_order\": {\n \"description\": \"Sequential order number for the line item. Determines the display order of line items on the vendor credit document. Lower numbers appear first.\",\n \"type\": \"integer\",\n \"example\": 0\n },\n \"quantity\": {\n \"description\": \"Number of units being credited for this line item. Must be a positive number. Used to calculate the total amount for the line item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"unit\": {\n \"description\": \"Unit of measurement for the line item quantity. Examples: kgs, Nos, hours, pieces. Used to specify how the quantity is measured.\",\n \"type\": \"string\",\n \"example\": \"Nos\"\n },\n \"rate\": {\n \"description\": \"Unit price or rate for the line item. The amount per unit before taxes and discounts. Used with quantity to calculate the line total.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 30\n },\n \"tax_id\": {\n \"description\": \"Unique identifier for the tax applied to the line item. Retrieve tax IDs from the List Taxes API endpoint in the taxes section. Determines tax calculations for this line item.\",\n \"type\": \"string\"\n },\n \"tds_tax_id\": {\n \"description\": \"TDS Tax ID of the Tax associated with the Vendor Credit\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_treatment_code\": {\n \"description\": \"Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction, bahrain_warranty_repair_services and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.\",\n \"type\": \"string\",\n \"example\": \"uae_others\",\n \"x-node_available_in\": [\n \"gcc\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tags\": {\n \"description\": \"Array of tags associated with the line item. Each tag contains tag_id and tag_option_id for categorization and tracking purposes.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag_id\": {\n \"description\": \"ID of the tag\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"tag_option_id\": {\n \"description\": \"ID of the tag option\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n }\n }\n }\n },\n \"item_custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\"\n }\n }\n }\n },\n \"serial_numbers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"project_id\": {\n \"description\": \"ID of the project\",\n \"type\": \"string\",\n \"example\": 90300000087378\n }\n }\n }\n },\n \"notes\": {\n \"description\": \"Additional notes or comments for the vendor credit. Displayed on the vendor credit document for vendor reference. Max-length [5000]\",\n \"type\": \"string\"\n },\n \"documents\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"description\": \"ID of the Document\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"file_name\": {\n \"description\": \"Name of the file\",\n \"type\": \"string\"\n }\n }\n }\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_field_id\": {\n \"description\": \"ID of the Custom Field\",\n \"type\": \"integer\",\n \"format\": \"int64\"\n },\n \"label\": {\n \"description\": \"Label of the Custom Field\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\"\n },\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorCreditRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorCreditRefund.json new file mode 100644 index 00000000..faf2387f --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorCreditRefund.json @@ -0,0 +1,334 @@ +{ + "name": "UpdateVendorCreditRefund", + "fully_qualified_name": "ZohoBooksApi.UpdateVendorCreditRefund@0.1.0", + "description": "Update a refunded vendor credit transaction.\n\nUse this tool to update details of a refunded vendor credit transaction by specifying the vendor credit ID and refund ID.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Unique identifier for the organization. This is needed to specify which organization the vendor credit refund update applies to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "vendor_credit_identifier", + "required": true, + "description": "Unique identifier of the vendor credit to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_id" + }, + { + "name": "vendor_credit_refund_identifier", + "required": true, + "description": "Unique identifier for the vendor credit refund transaction that needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendor_credit_refund_id" + }, + { + "name": "vendor_credit_refund_details", + "required": false, + "description": "JSON object with details to update the vendor credit refund. Includes date, refund mode, reference number, amount, exchange rate, account ID, and description.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the vendor credit is created. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Refund" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_vendor_credit_refund'.", + "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": [ + "ZohoBooks.debitnotes.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorcredits/{vendor_credit_id}/refunds/{vendor_credit_refund_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_id", + "tool_parameter_name": "vendor_credit_identifier", + "description": "Unique identifier of the vendor credit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendor_credit_refund_id", + "tool_parameter_name": "vendor_credit_refund_identifier", + "description": "Unique identifier of the vendor credit refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor credit refund." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "vendor_credit_refund_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date on which the vendor credit is created. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Refund" + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document." + } + }, + "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 \"required\": [\n \"date\",\n \"amount\",\n \"account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"description\": \"The date on which the vendor credit is created. Must be in yyyy-mm-dd format. This date determines the accounting period and affects tax calculations.\",\n \"type\": \"string\",\n \"example\": \"2014-08-28\"\n },\n \"refund_mode\": {\n \"description\": \"Mode of Refund\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"reference_number\": {\n \"description\": \"Optional reference number for tracking purposes. Can be any custom string or auto-generated. Useful for linking to external systems or internal tracking. Max-Length [100]\",\n \"type\": \"string\"\n },\n \"amount\": {\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 13\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate for converting the vendor credit currency to base currency. Required when currency differs from base currency. Retrieve rates from currency exchange rate APIs.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"account_id\": {\n \"description\": \"Unique identifier for the chart of accounts entry. Retrieve account IDs from the List Chart of Accounts API endpoint. Determines which account the line item affects for accounting purposes.\",\n \"type\": \"string\",\n \"example\": \"460000000020097\"\n },\n \"description\": {\n \"description\": \"Detailed description of the line item. Provides additional information about the product or service being credited. Displayed on the vendor credit document.\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorPayment.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorPayment.json new file mode 100644 index 00000000..7edd02fe --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorPayment.json @@ -0,0 +1,497 @@ +{ + "name": "UpdateVendorPayment", + "fully_qualified_name": "ZohoBooksApi.UpdateVendorPayment@0.1.0", + "description": "Update or modify an existing vendor payment.\n\nUse this tool to update an existing vendor payment, including modifying the amount applied to bills.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "Provide the specific ID of the organization for which the vendor payment is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_identifier", + "required": true, + "description": "The unique identifier of the vendor payment to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "vendor_payment_details", + "required": false, + "description": "Detailed information of the vendor payment including vendor ID, bills, and payment specifics. This should be a JSON object as described in the value schema.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor associated with the Vendor Payment." + }, + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill Payment" + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the bill the payment is to be applied." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Amount Withheld during Bill Payment" + } + }, + "description": "Individual bill payment details as array." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date the payment is made." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/ bank account from which the payment is made." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the Vendor Payment recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the Vendor Payment recorded." + }, + "is_paid_via_print_check": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Bill Payment is paid Via Print Check Option" + }, + "check_details": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value for the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_vendor_payment'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_identifier", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "vendor_payment_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor associated with the Vendor Payment." + }, + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill Payment" + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the bill the payment is to be applied." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Amount Withheld during Bill Payment" + } + }, + "description": "Individual bill payment details as array." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date the payment is made." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/ bank account from which the payment is made." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the Vendor Payment recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the Vendor Payment recorded." + }, + "is_paid_via_print_check": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Bill Payment is paid Via Print Check Option" + }, + "check_details": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value for the Custom Field" + } + }, + "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 \"required\": [\n \"amount\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"ID of the vendor associated with the Vendor Payment.\",\n \"type\": \"string\",\n \"example\": \"460000000026049\"\n },\n \"bills\": {\n \"description\": \"Individual bill payment details as array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"bill_payment_id\": {\n \"description\": \"ID of the Bill Payment\",\n \"type\": \"string\",\n \"example\": \"460000000053221\"\n },\n \"bill_id\": {\n \"description\": \"ID of the bill the payment is to be applied.\",\n \"type\": \"string\",\n \"example\": \"460000000053199\"\n },\n \"amount_applied\": {\n \"description\": \"Amount applied to the bill.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 150\n },\n \"tax_amount_withheld\": {\n \"description\": \"Tax Amount Withheld during Bill Payment\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"x-node_available_in\": [\n \"global\",\n \"in\",\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n },\n \"date\": {\n \"description\": \"Date the payment is made.\",\n \"type\": \"string\",\n \"example\": \"2013-10-07\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate of the currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"amount\": {\n \"description\": \"Total Amount of Vendor Payment\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 500\n },\n \"paid_through_account_id\": {\n \"description\": \"ID of the cash/ bank account from which the payment is made.\",\n \"type\": \"string\",\n \"example\": \"460000000000358\"\n },\n \"payment_mode\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"Stripe\"\n },\n \"description\": {\n \"description\": \"Description for the Vendor Payment recorded.\",\n \"type\": \"string\"\n },\n \"reference_number\": {\n \"description\": \"Reference number for the Vendor Payment recorded.\",\n \"type\": \"string\",\n \"example\": \"REF#912300\"\n },\n \"is_paid_via_print_check\": {\n \"description\": \"Check if the Bill Payment is paid Via Print Check Option\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"check_details\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"x-node_available_in\": [\n \"us\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value for the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorPaymentRefund.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorPaymentRefund.json new file mode 100644 index 00000000..51fbf858 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorPaymentRefund.json @@ -0,0 +1,334 @@ +{ + "name": "UpdateVendorPaymentRefund", + "fully_qualified_name": "ZohoBooksApi.UpdateVendorPaymentRefund@0.1.0", + "description": "Update the refunded transaction for a vendor payment.\n\nCall this tool to update details related to a vendor payment refund. It is used when modifications to an existing refund transaction are necessary.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization associated with the refund transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "payment_identifier", + "required": true, + "description": "Unique identifier of the payment. Required to specify which payment is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "inferrable": true, + "http_endpoint_parameter_name": "payment_id" + }, + { + "name": "vendor_payment_refund_id", + "required": true, + "description": "Unique identifier of the vendor payment refund required for updating the transaction.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor payment refund." + }, + "inferrable": true, + "http_endpoint_parameter_name": "vendorpayment_refund_id" + }, + { + "name": "refund_details", + "required": false, + "description": "JSON object containing details like date, refund mode, reference number, amount, exchange rate, account ID, and description for the vendor payment refund.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the Vendor Payment Refund." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode in which refund is made." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the Payment Refund" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account to which payment is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Payment Refund" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_vendor_payment_refund'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments/{payment_id}/refunds/{vendorpayment_refund_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "payment_id", + "tool_parameter_name": "payment_identifier", + "description": "Unique identifier of the payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the payment." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "vendorpayment_refund_id", + "tool_parameter_name": "vendor_payment_refund_id", + "description": "Unique identifier of the vendor payment refund.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the vendor payment refund." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "refund_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date of the Vendor Payment Refund." + }, + "refund_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode in which refund is made." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference Number of the Payment Refund" + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "to_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The account to which payment is refunded." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the Payment Refund" + } + }, + "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 \"required\": [\n \"date\",\n \"amount\",\n \"to_account_id\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"description\": \"Date of the Vendor Payment Refund.\",\n \"type\": \"string\",\n \"example\": \"2017-01-10\"\n },\n \"refund_mode\": {\n \"description\": \"Mode in which refund is made.\",\n \"type\": \"string\",\n \"example\": \"cash\"\n },\n \"reference_number\": {\n \"description\": \"Reference Number of the Payment Refund\",\n \"type\": \"string\"\n },\n \"amount\": {\n \"description\": \"Total Amount of Vendor Payment\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 500\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate of the currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"to_account_id\": {\n \"description\": \"The account to which payment is refunded.\",\n \"type\": \"string\",\n \"example\": \"460000000000385\"\n },\n \"description\": {\n \"description\": \"Description of the Payment Refund\",\n \"type\": \"string\",\n \"example\": \"Payment Refund\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorPaymentWithCustomId.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorPaymentWithCustomId.json new file mode 100644 index 00000000..57ef7ac1 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateVendorPaymentWithCustomId.json @@ -0,0 +1,563 @@ +{ + "name": "UpdateVendorPaymentWithCustomId", + "fully_qualified_name": "ZohoBooksApi.UpdateVendorPaymentWithCustomId@0.1.0", + "description": "Update or create a vendor payment using a unique custom field.\n\nThis tool updates an existing vendor payment by using a unique custom field as an identifier. If the unique value is not found and the X-Upsert option is enabled, it will create a new vendor payment if sufficient details are provided.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization within Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "custom_field_api_name", + "required": true, + "description": "The API name of the unique custom field used to identify the vendor payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Key" + }, + { + "name": "custom_field_unique_value", + "required": true, + "description": "The unique value of the custom field used to identify or create a vendor payment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Unique-Identifier-Value" + }, + { + "name": "vendor_payment_request_body", + "required": false, + "description": "A JSON object containing details of the vendor payment, including vendor ID, payment amount, date, payment mode, and associated bill details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor associated with the Vendor Payment." + }, + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill Payment" + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the bill the payment is to be applied." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Amount Withheld during Bill Payment" + } + }, + "description": "Individual bill payment details as array." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date the payment is made." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/ bank account from which the payment is made." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the Vendor Payment recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the Vendor Payment recorded." + }, + "is_paid_via_print_check": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Bill Payment is paid Via Print Check Option" + }, + "check_details": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value for the Custom Field" + } + }, + "description": null + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "create_new_record_if_not_exists", + "required": false, + "description": "Set to true to create a new vendor payment if no existing record matches the unique custom field value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "inferrable": true, + "http_endpoint_parameter_name": "X-Upsert" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_vendor_payment_using_custom_field'.", + "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": [ + "ZohoBooks.vendorpayments.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/vendorpayments", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Key", + "tool_parameter_name": "custom_field_api_name", + "description": "Unique CustomField Api Name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Api Name" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Unique-Identifier-Value", + "tool_parameter_name": "custom_field_unique_value", + "description": "Unique CustomField Value", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique CustomField Value" + }, + "accepted_as": "header", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "X-Upsert", + "tool_parameter_name": "create_new_record_if_not_exists", + "description": "If there is no record is found unique custom field value , will create new invoice", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If there is no record is found unique custom field value , will create new invoice" + }, + "accepted_as": "header", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "vendor_payment_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the vendor associated with the Vendor Payment." + }, + "bills": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "bill_payment_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the Bill Payment" + }, + "bill_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the bill the payment is to be applied." + }, + "amount_applied": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Amount applied to the bill." + }, + "tax_amount_withheld": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tax Amount Withheld during Bill Payment" + } + }, + "description": "Individual bill payment details as array." + }, + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Date the payment is made." + }, + "exchange_rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exchange rate of the currency." + }, + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total Amount of Vendor Payment" + }, + "paid_through_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the cash/ bank account from which the payment is made." + }, + "payment_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Mode of Vendor Payment" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the Vendor Payment recorded." + }, + "reference_number": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reference number for the Vendor Payment recorded." + }, + "is_paid_via_print_check": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Check if the Bill Payment is paid Via Print Check Option" + }, + "check_details": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the Custom Field" + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value for the Custom Field" + } + }, + "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 \"required\": [\n \"amount\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"vendor_id\": {\n \"description\": \"ID of the vendor associated with the Vendor Payment.\",\n \"type\": \"string\",\n \"example\": \"460000000026049\"\n },\n \"bills\": {\n \"description\": \"Individual bill payment details as array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"bill_payment_id\": {\n \"description\": \"ID of the Bill Payment\",\n \"type\": \"string\",\n \"example\": \"460000000053221\"\n },\n \"bill_id\": {\n \"description\": \"ID of the bill the payment is to be applied.\",\n \"type\": \"string\",\n \"example\": \"460000000053199\"\n },\n \"amount_applied\": {\n \"description\": \"Amount applied to the bill.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 150\n },\n \"tax_amount_withheld\": {\n \"description\": \"Tax Amount Withheld during Bill Payment\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"x-node_available_in\": [\n \"global\",\n \"in\",\n \"au\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n }\n },\n \"date\": {\n \"description\": \"Date the payment is made.\",\n \"type\": \"string\",\n \"example\": \"2013-10-07\"\n },\n \"exchange_rate\": {\n \"description\": \"Exchange rate of the currency.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 1\n },\n \"amount\": {\n \"description\": \"Total Amount of Vendor Payment\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 500\n },\n \"paid_through_account_id\": {\n \"description\": \"ID of the cash/ bank account from which the payment is made.\",\n \"type\": \"string\",\n \"example\": \"460000000000358\"\n },\n \"payment_mode\": {\n \"description\": \"Mode of Vendor Payment\",\n \"type\": \"string\",\n \"example\": \"Stripe\"\n },\n \"description\": {\n \"description\": \"Description for the Vendor Payment recorded.\",\n \"type\": \"string\"\n },\n \"reference_number\": {\n \"description\": \"Reference number for the Vendor Payment recorded.\",\n \"type\": \"string\",\n \"example\": \"REF#912300\"\n },\n \"is_paid_via_print_check\": {\n \"description\": \"Check if the Bill Payment is paid Via Print Check Option\",\n \"type\": \"boolean\",\n \"example\": false,\n \"x-node_available_in\": [\n \"us\",\n \"ca\",\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"check_details\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"x-node_available_in\": [\n \"us\",\n \"ca\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"custom_fields\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"index\": {\n \"description\": \"Index of the Custom Field\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"Value for the Custom Field\",\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateZohoItemDetails.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateZohoItemDetails.json new file mode 100644 index 00000000..e795ba29 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/UpdateZohoItemDetails.json @@ -0,0 +1,755 @@ +{ + "name": "UpdateZohoItemDetails", + "fully_qualified_name": "ZohoBooksApi.UpdateZohoItemDetails@0.1.0", + "description": "Update the details of an item in Zoho Books.\n\nUse this tool to update item details in Zoho Books by providing the item ID and the new information to be updated.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The ID of the organization in Zoho Books for which the item details are to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "item_identifier", + "required": true, + "description": "Unique identifier of the item to be updated in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_id" + }, + { + "name": "item_update_details", + "required": false, + "description": "JSON object containing details to update an item: name, rate, description, tax IDs, SKU, etc. Follow the specified schema for each field.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item. Max-length [100]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Price of the item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the item. Max-length [2000]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "purchase_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the purchase tax rule" + }, + "sales_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the sales tax rule" + }, + "tax_percentage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percent of the tax." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "sku": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SKU value of item,should be unique throughout the product" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the type of an item. Allowed values:
goods or service or digital_service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track the taxability of the item." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption. Mandatory, if is_taxable is false." + }, + "purchase_tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the purchase tax exemption. Mandatory, if is_taxable is false." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the item has to be associated with." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Max-length [25]" + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the item. Allowed values: sales,purchases,sales_and_purchases and inventory. Default value will be sales." + }, + "purchase_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase description for the item." + }, + "purchase_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase price of the item." + }, + "purchase_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the COGS account to which the item has to be associated with. Mandatory, if item_type is purchase / sales and purchase / inventory." + }, + "inventory_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the stock account to which the item has to be associated with. Mandatory, if item_type is inventory." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Preferred vendor ID." + }, + "reorder_level": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reorder level of the item." + }, + "locations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "initial_stock": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opening stock of the item." + }, + "initial_stock_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price of the opening stock." + } + }, + "description": null + }, + "item_tax_preferences": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "tax_specification": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set whether the tax type is intra/interstate" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an item." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'update_item'.", + "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": [ + "ZohoBooks.settings.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/items/{item_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_id", + "tool_parameter_name": "item_identifier", + "description": "Unique identifier of the item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the item." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "item_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the item. Max-length [100]" + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Price of the item." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the item. Max-length [2000]" + }, + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "purchase_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the purchase tax rule" + }, + "sales_tax_rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Id of the sales tax rule" + }, + "tax_percentage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Percent of the tax." + }, + "hsn_or_sac": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "HSN Code" + }, + "sat_item_key_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs." + }, + "unitkey_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Add Unit Key Code for your goods/services. Download the CFDI Catalogs." + }, + "sku": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SKU value of item,should be unique throughout the product" + }, + "product_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify the type of an item. Allowed values:
goods or service or digital_service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods" + }, + "is_taxable": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to track the taxability of the item." + }, + "tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax exemption. Mandatory, if is_taxable is false." + }, + "purchase_tax_exemption_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the purchase tax exemption. Mandatory, if is_taxable is false." + }, + "account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the account to which the item has to be associated with." + }, + "avatax_tax_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A tax code is a unique label used to group Items (products, services, or charges) together. Max-length [25]" + }, + "avatax_use_code": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]" + }, + "item_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the item. Allowed values: sales,purchases,sales_and_purchases and inventory. Default value will be sales." + }, + "purchase_description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase description for the item." + }, + "purchase_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Purchase price of the item." + }, + "purchase_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the COGS account to which the item has to be associated with. Mandatory, if item_type is purchase / sales and purchase / inventory." + }, + "inventory_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the stock account to which the item has to be associated with. Mandatory, if item_type is inventory." + }, + "vendor_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Preferred vendor ID." + }, + "reorder_level": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Reorder level of the item." + }, + "locations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "location_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Location ID" + }, + "initial_stock": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Opening stock of the item." + }, + "initial_stock_rate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unit price of the opening stock." + } + }, + "description": null + }, + "item_tax_preferences": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tax_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the tax to be associated to the item." + }, + "tax_specification": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set whether the tax type is intra/interstate" + } + }, + "description": null + }, + "custom_fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customfield_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the Custom Field" + } + }, + "description": "Custom fields for an item." + } + }, + "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 \"required\": [\n \"name\",\n \"rate\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the item. Max-length [100]\",\n \"type\": \"string\",\n \"example\": \"Hard Drive\"\n },\n \"rate\": {\n \"description\": \"Price of the item.\",\n \"type\": \"number\",\n \"format\": \"double\",\n \"example\": 120\n },\n \"description\": {\n \"description\": \"Description for the item. Max-length [2000]\",\n \"type\": \"string\",\n \"example\": \"500GB\"\n },\n \"tax_id\": {\n \"description\": \"ID of the tax to be associated to the item.\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [],\n \"x-node_unavailable_in\": [\n \"us\",\n \"in\"\n ]\n },\n \"purchase_tax_rule_id\": {\n \"description\": \"Id of the purchase tax rule\",\n \"type\": \"string\",\n \"example\": 127919000000106780,\n \"x-node_available_in\": [\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sales_tax_rule_id\": {\n \"description\": \"Id of the sales tax rule\",\n \"type\": \"string\",\n \"example\": 127919000000106780,\n \"x-node_available_in\": [\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_percentage\": {\n \"description\": \"Percent of the tax.\",\n \"type\": \"string\",\n \"example\": \"70%\"\n },\n \"hsn_or_sac\": {\n \"description\": \"HSN Code\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sat_item_key_code\": {\n \"description\": \"Add SAT Item Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"unitkey_code\": {\n \"description\": \"Add Unit Key Code for your goods/services. Download the CFDI Catalogs.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"mx\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"sku\": {\n \"description\": \"SKU value of item,should be unique throughout the product\",\n \"type\": \"string\",\n \"example\": \"s12345\"\n },\n \"product_type\": {\n \"description\": \"Specify the type of an item. Allowed values:
goods or service or digital_service.
For SouthAfrica Edition: service, goods, capital_service and capital_goods\",\n \"type\": \"string\",\n \"example\": \"goods\"\n },\n \"is_taxable\": {\n \"description\": \"Boolean to track the taxability of the item.\",\n \"type\": \"boolean\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_exemption_id\": {\n \"description\": \"ID of the tax exemption. Mandatory, if is_taxable is false.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"in\",\n \"us\",\n \"mx\",\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"purchase_tax_exemption_id\": {\n \"description\": \"ID of the purchase tax exemption. Mandatory, if is_taxable is false.\",\n \"type\": \"string\",\n \"x-node_available_in\": [\n \"ke\",\n \"za\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"account_id\": {\n \"description\": \"ID of the account to which the item has to be associated with.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"avatax_tax_code\": {\n \"description\": \"A tax code is a unique label used to group Items (products, services, or charges) together. Max-length [25]\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"avatax_use_code\": {\n \"description\": \"Used to group like customers for exemption purposes. It is a custom value that links customers to a tax rule. Select from Avalara [standard codes][1] or enter a custom code. Max-length [25]\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [\n \"Avalara Integration\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"item_type\": {\n \"description\": \"Type of the item. Allowed values: sales,purchases,sales_and_purchases and inventory. Default value will be sales.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"purchase_description\": {\n \"description\": \"Purchase description for the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"purchase_rate\": {\n \"description\": \"Purchase price of the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"purchase_account_id\": {\n \"description\": \"ID of the COGS account to which the item has to be associated with. Mandatory, if item_type is purchase / sales and purchase / inventory.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"inventory_account_id\": {\n \"description\": \"ID of the stock account to which the item has to be associated with. Mandatory, if item_type is inventory.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"vendor_id\": {\n \"description\": \"Preferred vendor ID.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"reorder_level\": {\n \"description\": \"Reorder level of the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"locations\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"location_id\": {\n \"description\": \"Location ID\",\n \"type\": \"string\",\n \"example\": \"460000000038080\"\n },\n \"initial_stock\": {\n \"description\": \"Opening stock of the item.\",\n \"type\": \"string\",\n \"example\": \" \"\n },\n \"initial_stock_rate\": {\n \"description\": \"Unit price of the opening stock.\",\n \"type\": \"string\",\n \"example\": \" \"\n }\n }\n }\n },\n \"item_tax_preferences\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"tax_id\": {\n \"description\": \"ID of the tax to be associated to the item.\",\n \"type\": \"string\",\n \"example\": 982000000037049,\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"tax_specification\": {\n \"description\": \"Set whether the tax type is intra/interstate\",\n \"type\": \"string\",\n \"example\": \"intra\",\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n }\n }\n },\n \"x-node_available_in\": [\n \"in\"\n ],\n \"x-node_unavailable_in\": []\n },\n \"custom_fields\": {\n \"description\": \"Custom fields for an item.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"customfield_id\": {\n \"type\": \"integer\",\n \"format\": \"int64\",\n \"example\": \"46000000012845\"\n },\n \"value\": {\n \"description\": \"Value of the Custom Field\",\n \"type\": \"string\",\n \"example\": \"Normal\"\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/VoidInvoiceStatus.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/VoidInvoiceStatus.json new file mode 100644 index 00000000..b84bb6f5 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/VoidInvoiceStatus.json @@ -0,0 +1,154 @@ +{ + "name": "VoidInvoiceStatus", + "fully_qualified_name": "ZohoBooksApi.VoidInvoiceStatus@0.1.0", + "description": "Mark an invoice as void in Zoho Books.\n\nUse this tool to change the status of an invoice to void in Zoho Books. This process will unassociate any payments and credits, placing them under customer credits.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books. Required to specify which organization the invoice belongs to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_unique_identifier", + "required": true, + "description": "Unique identifier for the invoice to be marked as void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_invoice_void'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/status/void", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_unique_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/VoidRetainerInvoice.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/VoidRetainerInvoice.json new file mode 100644 index 00000000..f05993ae --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/VoidRetainerInvoice.json @@ -0,0 +1,154 @@ +{ + "name": "VoidRetainerInvoice", + "fully_qualified_name": "ZohoBooksApi.VoidRetainerInvoice@0.1.0", + "description": "Mark a retainer invoice as void.\n\nThis tool marks a specified retainer invoice as void, disassociating any payments and credits and moving them under customer credits.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "ID of the organization required to identify which organization's invoice to void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "retainer_invoice_id", + "required": true, + "description": "Unique identifier for the retainer invoice to be marked as void.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "retainerinvoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'mark_retainer_invoice_void'.", + "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": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/retainerinvoices/{retainerinvoice_id}/status/void", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "retainerinvoice_id", + "tool_parameter_name": "retainer_invoice_id", + "description": "Unique identifier of the retainer invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the retainer invoice." + }, + "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_books_api/arcade_zoho_books_api/wrapper_tools/WriteOffFixedAsset.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/WriteOffFixedAsset.json new file mode 100644 index 00000000..e6421308 --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/WriteOffFixedAsset.json @@ -0,0 +1,237 @@ +{ + "name": "WriteOffFixedAsset", + "fully_qualified_name": "ZohoBooksApi.WriteOffFixedAsset@0.1.0", + "description": "Remove a fixed asset from the records.\n\nUse this tool to write off a fixed asset. It should be called when an asset needs to be removed from the records in Zoho Books.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique identifier for the organization. Required to specify which organization's asset is to be written off.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "fixed_asset_identifier", + "required": true, + "description": "Unique identifier of the fixed asset to be written off in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fixed_asset_id" + }, + { + "name": "write_off_details", + "required": false, + "description": "Details of the asset write-off, include date, expense account ID, and reason in JSON format.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the date on which the fixed asset is written off" + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter an account id to track the expenses associated with the written-off fixed asset" + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the reason for writing off the fixed asset" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'write_off_fixed_asset'.", + "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": [ + "ZohoBooks.fixedasset.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/fixedassets/{fixed_asset_id}/writeoff", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fixed_asset_id", + "tool_parameter_name": "fixed_asset_identifier", + "description": "Unique identifier of the fixed asset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the fixed asset." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "write_off_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the date on which the fixed asset is written off" + }, + "expense_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter an account id to track the expenses associated with the written-off fixed asset" + }, + "reason": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enter the reason for writing off the fixed asset" + } + }, + "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 \"required\": [\n \"date\",\n \"expense_account_id\",\n \"reason\"\n ],\n \"type\": \"object\",\n \"properties\": {\n \"date\": {\n \"type\": \"string\",\n \"description\": \"Enter the date on which the fixed asset is written off\",\n \"example\": \"2024-12-17\"\n },\n \"expense_account_id\": {\n \"type\": \"string\",\n \"description\": \"Enter an account id to track the expenses associated with the written-off fixed asset\",\n \"example\": \"3640355000000000421\"\n },\n \"reason\": {\n \"type\": \"string\",\n \"description\": \"Enter the reason for writing off the fixed asset\",\n \"example\": \"Asset is damaged\"\n }\n }\n }\n }\n }\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/WriteOffInvoiceBalance.json b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/WriteOffInvoiceBalance.json new file mode 100644 index 00000000..e6e8ed6b --- /dev/null +++ b/toolkits/zoho_books_api/arcade_zoho_books_api/wrapper_tools/WriteOffInvoiceBalance.json @@ -0,0 +1,154 @@ +{ + "name": "WriteOffInvoiceBalance", + "fully_qualified_name": "ZohoBooksApi.WriteOffInvoiceBalance@0.1.0", + "description": "Write off the balance amount of an invoice in Zoho Books.\n\nUse this tool to write off the remaining balance of an invoice in Zoho Books when the amount is uncollectible.", + "toolkit": { + "name": "ArcadeZohoBooksApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_id", + "required": true, + "description": "The unique ID of the organization in Zoho Books.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "inferrable": true, + "http_endpoint_parameter_name": "organization_id" + }, + { + "name": "invoice_identifier", + "required": true, + "description": "The unique identifier for the invoice to be written off.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "inferrable": true, + "http_endpoint_parameter_name": "invoice_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'write_off_invoice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": { + "provider_id": "arcade-zoho", + "provider_type": "oauth2", + "id": null, + "oauth2": { + "scopes": [ + "ZohoBooks.invoices.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-books API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.1.0", + "description": "" + }, + "url": "{zoho_server_url}/books/v3/invoices/{invoice_id}/writeoff", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "organization_id", + "tool_parameter_name": "organization_id", + "description": "ID of the organization", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the organization" + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "invoice_id", + "tool_parameter_name": "invoice_identifier", + "description": "Unique identifier of the invoice.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier of the invoice." + }, + "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_books_api/pyproject.toml b/toolkits/zoho_books_api/pyproject.toml new file mode 100644 index 00000000..7dedca79 --- /dev/null +++ b/toolkits/zoho_books_api/pyproject.toml @@ -0,0 +1,60 @@ +[build-system] +requires = [ "hatchling",] +build-backend = "hatchling.build" + +[project] +name = "arcade_zoho_books_api" +version = "0.1.0" +description = "Tools that enable LLMs to interact directly with the zoho-books 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_books_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_books_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_books_api",] diff --git a/toolkits/zoho_books_api/tests/__init__.py b/toolkits/zoho_books_api/tests/__init__.py new file mode 100644 index 00000000..e69de29b